[Докер] зеркало Производство и запуск Nginx

окружающая среда

  • Операционная система (кошки / и т.д. / RedHat-релиз): CentOS Linux релиз 7.6.1810 (ядро)
  • Докер: 18.09.6

файл

  • Dockerfile
FROM nginx:1.14-alpine
LABEL maintainer="chenjo <[email protected]>"

ENV NGX_DOC_ROOT="/data/web/html/"

ADD index.html ${NGX_DOC_ROOT}
ADD entrypoint.sh /bin/

CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
ENTRYPOINT ["/bin/entrypoint.sh"]
#以下写法在实验中均不行,容器一旦运行就立马退出
#ENTRYPOINT ["/bin/sh", "-c", "/bin/entrypoint.sh"]
#ENTRYPOINT ["/bin/sh", "-c", "/bin/sh"]
  • entrypoint.sh
[root@appsvr img3]# cat entrypoint.sh
#!/bin/sh
cat > /etc/nginx/conf.d/www.conf << EOF
server {
        server_name ${HOSTNAME};
        listen ${IP:-0.0.0.0}:${PORT:-80};
        root ${NGX_DOC_ROOT:-/usr/share/nginx/html/};
}
EOF

exec "$@"
  • index.html
<h1>New Doc for Nginx</h1>

Похожие команды

# 生成镜像
docker build -t myweb3:v0.3-1 ./
# 运行容器
docker run --name myweb --rm -P myweb3:v0.3-1
# 访问 Nginx 的默认主页
curl 10.0.0.2
# 通过另一个终端访问该容器
docker exec -it myweb /bin/sh
# 查看主机名
cat /etc/nginx/conf.d/www.conf
# 通过主机名访问自定义的主页
wget -O - -q 6a04e5550bce

Ключевые моменты

CMD передается в качестве параметра Entrypoint, только в этом случае, это эквивалентно /bin/entrypoint.sh /usr/sbin/nginx -g 'daemon off;'.
В entrypoint.sh в exec "$@", $ @ представляют все входящие параметры, Ex представляют дочерний процесс так , что PID родительского процесса и, вместо этого, родительского процесса завершается. Здесь, родительский процесс является оболочкой.

рекомендация

отwww.cnblogs.com/chenjo/p/10935965.html