Dockerfile之nginx脚本(dockerfile通过echo输入多行内容到文本)
FROM nginx
RUN echo 'upstream portainer {\n\
server www.micking.top:9000;\n\
}\n\
server {\n\
listen 19000;\n\
listen 9000;\n\
server_name localhost;\n\
ssl on;\n\
ssl_certificate /etc/nginx/cert/2423367_www.micking.top.pem;\n\
ssl_certificate_key /etc/nginx/cert/2423367_www.micking.top.key;\n\
ssl_session_timeout 5m;\n\
ssl_protocols SSLv2 SSLv3 TLSv1.2;\n\
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;\n\
ssl_prefer_server_ciphers on;\n\
if ($scheme != "https") {\n\
return 301 https://$host$request_uri;\n\
}\n\
location / {\n\
proxy_pass http://portainer;\n\
proxy_set_header Host $host;\n\
proxy_set_header X-Real-IP $remote_addr;\n\
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\
proxy_set_header Via "nginx";\n\
}\n\
}\n'\
>> /etc/nginx/conf.d/https_portainer.conf
ADD 2423367_www.micking.top.key /etc/nginx/cert/2423367_www.micking.top.key
ADD 2423367_www.micking.top.pem /etc/nginx/cert/2423367_www.micking.top.pem
以上脚本带有使用echo在dockerfile中输入多行内容到文本中
注意,docker RUN echo 输入的文本内容是在镜像中的目录,而非宿主机中,创建容器后会出现在容器中,要通过容器目录挂载到宿主机中才能在宿主机中操作
docker RUN echo 输入多行文本一定要用 `` 包裹起来,每行最后要加上\n,还有末尾结束要加上斜杠,也就是上面的效果:
'xxx\n
aaa\n'\
echo 小知识
echo $'xxx'
echo 后面如果加了符号