Docker生产准备好php-fpm和nginx配置

前端之家收集整理的这篇文章主要介绍了Docker生产准备好php-fpm和nginx配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Docker中结合使用PHP-fpm,Nginx和app代码有一个很小的理论问题.

当docker图像只做一件事时,我试图坚持模型 – >我有PHP-fpm和Nginx的独立容器.

PHP:
    image: PHP:5-fpm-alpine
    expose:
        - 9000:9000
    volumes:
        - ./:/var/www/app

Nginx:
    image: Nginx:alpine
    ports:
        - 3000:80
    links:
        - PHP
    volumes:
        - ./Nginx/app.conf:/etc/Nginx/conf.d/app.conf
        - ./:/var/www/app

注意:在app.conf中是root / var / www / app;
Example schema from Symfony

这在开发中很棒,但我不知道如何将其转换为生产就绪状态.在生产中挂载app目录真的是不好的做法(如果我没错的话).在最好的情况下,我将应用程序源代码复制到容器中并使用此预编译代码(在Dockerfile中为COPY./ var / www / app),但在这种情况下是不可能的,或者我不知道如何.

我需要在两个contatiner(Nginx容器和PHP-fpm容器)之间共享应用程序源代码,因为需要它的展位.

当然我可以制作自己的NginxPHP-fpm容器并添加COPY. / var / www / app进入他们两个,但我认为这是错误的方式,因为我重复代码和整个构建过程(安装依赖项,构建源代码等…)必须在两者(Nginx / PHP-fpm) )容器.

我尝试搜索,但我不知道如何解决这个问题.很多文章都展示了如何使用docker-compose文件和使用–volume挂载代码,但我没有找到任何示例如何在生产中使用它(没有卷).

对我来说只有一个可接受的解决方案(在这个时间)是使用NginxPHP-fpm一起制作一个容器但是我不确定什么时候是一个好方法(我试图找到最佳实践).

你有这方面的经验或任何想法如何解决它?

谢谢你的回复

最佳答案
这时我使用smth:

Dockerfile:

FROM PHP:fpm
COPY . /var/www/app/
WORKDIR /var/www/app/
RUN composer install
EXPOSE 9000
VOLUME /var/www/app/web

Dockerfile.Nginx

FROM Nginx
COPY default /etc/Nginx/default

泊坞窗,compose.yml

app:
  build:
    context: .
web:
  build:
    context: .
    dockerfile: Dockerfile.Nginx
  volumes_from: app  

但是在17.05发布的几天内,我们可以在一个Dockerfile中做到:

FROM PHP:cli AS builder
COPY . /var/www/app/
WORKDIR /var/www/app/
RUN composer install && bin/console assets:dump

FROM PHP:fpm AS app
COPY --from=builder /var/www/app/src /var/www/app/vendor /var/www/app/
COPY --from=builder /var/www/app/web/app.PHP /var/www/app/vendo /var/www/app/web/

FROM Nginx AS web
COPY default /etc/Nginx/default
COPY --from=builder /var/www/app/web /var/www/app/web
原文链接:https://www.f2er.com/nginx/434744.html

猜你在找的Nginx相关文章