【发布时间】:2019-07-09 15:29:16
【问题描述】:
我想在容器启动时运行 nginx 和 php-fpm,但我似乎不能这样做。这是我的Dockerfile:
FROM php:7-fpm-alpine
EXPOSE 9080 8000
EXPOSE 9088 80
WORKDIR /var/www
COPY . .
RUN apk add nginx composer php7-fpm && \
composer install --no-progress && \
mkdir -p /etc/nginx /etc/nginx/sites-available /etc/nginx/sites-enabled /run/nginx && \
ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf && \
cp nginx.conf /etc/nginx/conf.d/default.conf
CMD ["nginx", "-g", "daemon off;"]
容器启动并运行,但是当我运行 ps aux 时,nginx 无处可见,直到我运行 nginx 命令(配置正常,nginx -t 返回正常,并且通过打开的容器运行它确实启动了服务)。
我试图链接RUN php-fpm7 && nginx,但这无济于事。
还使用像ENTRYPOINT ["nginx"] 这样的入口点对我没有任何帮助。
如何确保这些进程在创建容器时正在运行?
【问题讨论】:
-
这是 docker 最佳实践的一部分——一个容器就是一个进程。因此,通常您应该为
fpm创建一个容器,为nginx创建另一个容器。这是doc article about。 -
我建议检查 lslio/nginx-php-fpm 或 richarvey/nginx-php-fpm 的 Dockerfile。它按照您的预期运行。那里的 Dockerfile 可以帮助你找出你的问题。
标签: php docker nginx dockerfile