在一个dockerfile中结合PHP-fpm和nginx

我需要将PHP-fpm和Nginx结合在一个dockerfile中进行生产部署.

所以最好是:

(1)使用PHP启动dockerfile:7.1.8-fpm然后在它上面安装Nginx图像层?

(2)或者你建议使用Nginx图像,然后使用apt-get安装PHP-fpm?

PS:我没有用于生产部署的docker-compose构建选项.在我的开发环境中,我已经使用docker-compose并轻松地从两个图像构建多容器应用程序.我们的组织devop不支持基于docker-compose的prod环境部署.

解决方法:

Nginx安装比PHP容易得多,因此您可以更轻松地将Nginx安装到即用型官方PHP映像中.下面是示例Dockerfile,显示如何通过安装几个PHP扩展来达到目标​​:

FROM PHP:7.2-fpm

RUN apt-get update -y \
    && apt-get install -y Nginx

# PHP_CPPFLAGS are used by the docker-PHP-ext-* scripts
ENV PHP_CPPFLAGS="$PHP_CPPFLAGS -std=c++11"

RUN docker-PHP-ext-install pdo_MysqL \
    && docker-PHP-ext-install opcache \
    && apt-get install libicu-dev -y \
    && docker-PHP-ext-configure intl \
    && docker-PHP-ext-install intl \
    && apt-get remove libicu-dev icu-devtools -y
RUN { \
        echo 'opcache.memory_consumption=128'; \
        echo 'opcache.interned_strings_buffer=8'; \
        echo 'opcache.max_accelerated_files=4000'; \
        echo 'opcache.revalidate_freq=2'; \
        echo 'opcache.fast_shutdown=1'; \
        echo 'opcache.enable_cli=1'; \
    } > /usr/local/etc/PHP/conf.d/PHP-opocache-cfg.ini

copY Nginx-site.conf /etc/Nginx/sites-enabled/default
copY entrypoint.sh /etc/entrypoint.sh

copY --chown=www-data:www-data . /var/www/mysite

workdir /var/www/mysite

EXPOSE 80 443

ENTRYPOINT ["/etc/entrypoint.sh"]

Nginx-site.conf文件包含您的Nginx http主机配置.以下示例适用于Symfony应用程序:

server {
    root    /var/www/mysite/web;

    include /etc/Nginx/default.d/*.conf;

    index app.PHP index.PHP index.html index.htm;

    client_max_body_size 30m;

    location / {
        try_files $uri $uri/ /app.PHP$is_args$args;
    }

    location ~ [^/]\.PHP(/|$) {
        fastcgi_split_path_info ^(.+?\.PHP)(/.*)$;
        # Mitigate https://httpoxy.org/ vulnerabilities
        fastcgi_param HTTP_PROXY "";
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index app.PHP;
        include fastcgi.conf;
    }
}

entrypoint.sh将在容器启动时运行NginxPHP-fpm(否则只会启动PHP-fpm作为官方PHP映像的认操作):

#!/usr/bin/env bash
service Nginx start
PHP-fpm

当然,这不是最佳实践的最佳方式,但我希望这是你的问题的答案.

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...