【发布时间】:2017-04-23 18:49:45
【问题描述】:
为了版本控制和安全性,我想将两个 Dockerfile 合并为一个,然后为 .sock 创建一个目录 => 运行 rmdir 和 chown。 如果没有 rmdir 和 chown,如果在 port:9000 上运行,我可以完美地构建 docker。一旦我尝试在 dockerfile 中设置 .sock 的目录,docker 构建过程就会退出。以下所有详细信息。非常感谢您的帮助。
第一个 Dockerfile 一半
FROM debian:jessie
ENV NGINX_VERSION 1.11.6-1~jessie
RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
&& echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
ca-certificates \
nginx=${NGINX_VERSION} \
nginx-module-xslt \
nginx-module-geoip \
nginx-module-image-filter \
nginx-module-perl \
nginx-module-njs \
gettext-base \
&& rm -rf /var/lib/apt/lists/*
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80 443
#CMD ["nginx", "-g", "daemon off;"]
第二个 Dockerfiel 一半 with this PHP code 以及高于此代码一级的相应文件。 我不暴露 9000 端口并注释掉 CMD。 然后通过 supervisord 进行管理。
我在 docker-compose 的帮助下构建它
version: '2'
services:
web:
build:
context: ../../builds/nx1116Php71RC6Comp123_J
dockerfile: Dockerfile
image:
tl_nx1116php71rc6comp123:v1
#mounts HOST:CONTAINER (the actual server to the container system)
volumes:
#nginx
- ../../data/nxphp/nginx1116/html:/usr/share/nginx/html
- ../../data/nxphp/nginx1116/conf.d:/etc/nginx/conf.d
- ../../logs/nxphp:/var/log/nginx
#PHP
- ../../data/nxphp/php71fpm/etc:/usr/local/etc
# - ../../logs/nxphp/php71fpm:?????
#Supervisor
- ../../data/nxphp/supervisor/supervisor.conf:/etc/supervisor.conf
- ../../logs/supervisor:/var/log/supervisor
#foward port HOST:CONTAINER
ports:
- "80:80"
- "443:443"
当我这样运行它时,设置 php 和 nginx confs 以使用 9000 一切正常。
但是我想和 .sock 谈谈。没有,所以我需要创建一个/目录,nginx可以把它放在那里。因此,在我看来,我把我的 docker 文件放在了末尾
RUN set -xe \
mkdir -p /var/run/php-fpm
&& chown www-data:www-data /var/run/php-fpm
然而,这总是以构建错误结束。当我执行部分构建的 docker 映像时,我找不到 /var/run/php-fpm。我也尝试将它放入 /run,但结果相同。以这种方式从它“工作”两个 RUN 命令,我没有错误,但该文件夹仍然不存在,然后显然我的图像退出它找不到 .sock 文件夹。
&& { 回声'[全局]'; echo 'daemonize = no';回声;回声'[www]'; echo '听 = [::]:9000'; } |三通 php-fpm.d/zz-docker.conf ---> 使用缓存 ---> 609c93af398d 第 22 步:运行 set -xe mkdir -p /var/run/php-fpm && chown www-data:www-data /var/run/php-fpm ---> 在 de4b7443a82a 中运行 + chown www-data:www-data /var/run/php-fpm chown: 无法访问 '/var/run/php-fpm': 没有这样的文件或目录 错误:服务'web'未能构建:命令'/bin/sh -c set -xe mkdir -p /var/run/php-fpm && chown www-data:www-data /var/run/php-fpm ' 返回一个非零代码:1
任何帮助将不胜感激
【问题讨论】:
标签: php nginx docker docker-compose dockerfile