【问题标题】:Start Nginx from php fpm image automatically自动从 php fpm 镜像启动 Nginx
【发布时间】:2019-03-17 15:46:18
【问题描述】:

我有以下 Dockerfile

FROM php:7.2-fpm

LABEL maintainer="youri@smilinggents.nl"

RUN apt-get update && \
    apt-get install -y nginx git zip

COPY default.conf /etc/nginx/conf.d/default.conf

RUN apt-get update && \
    apt-get install -y libpng-dev libxml2-dev libcurl3-dev libcurl4-openssl-dev && \
    docker-php-ext-install gd && \
    docker-php-ext-install soap && \
    docker-php-ext-install pdo_mysql && \
    docker-php-ext-install intl && \
    docker-php-ext-install zip

RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer

WORKDIR /var/www/pidz/

RUN mkdir ./var/
COPY ./app app
COPY ./bin bin
COPY ./src src
COPY ./web web
COPY ./composer.json composer.json
COPY ./composer.lock composer.lock

ARG SSH_PRIVATE_KEY
# some ssh stuff I perform

RUN export SYMFONY_ENV=staging && \
    composer install

EXPOSE 80

当我构建 Dockerfile 时

docker build . --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)"

然后运行镜像

docker run -p 80:80 <image>

Nginx 没有运行,但是当我在容器内运行nginx 时,Nginx 已启动

如何让 Nginx 自动启动?

【问题讨论】:

    标签: docker nginx


    【解决方案1】:

    因为你没有启动nginx。

    docker run -p 80:80 <image> -d nginx
    

    或者您可以在 Dockerfile 末尾添加CMD ["/usr/sbin/nginx", "-g", "daemon off;"] 官方Dockerfile 然后当您运行映像时它将自动启动

    【讨论】:

    • CMD 仍然停止容器,参见:stackoverflow.com/a/42219138/2753579
    • 在后一种情况下,请记住将daemon off;放入您的nginx conf中,以免分叉到后台,否则您的容器将在启动nginx后终止。
    • @Ntwobike 当我添加CMD ["/usr/sbin/nginx", "-g", "daemon off;"] 时,php 不再运行...
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2013-08-16
    • 2012-11-12
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多