gpt4 book ai didi

php - Docker 生产就绪 php-fpm 和 nginx 配置

转载 作者:IT老高 更新时间:2023-10-28 12:46:48 24 4
gpt4 key购买 nike

我在 Docker 中结合 php-fpm、nginx 和应用程序代码有一个小理论问题。

当 docker image 只做一件事时,我试图坚持模型 -> 我有单独的 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 目录是非常糟糕的做法(如果我没记错的话)。在最好的情况下,我将应用程序源代码复制到容器中并使用这个预构建的代码(COPY ./var/www/app in Dockerfile),但在这种情况下是不可能的,或者我不知道怎么弄。

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

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

我尝试搜索,但不知道如何解决此问题。很多文章都展示了如何使用 docker-compose 文件执行此操作并使用 --volume 挂载代码,但我没有找到任何示例如何在生产环境中使用它(没有卷)。

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

您对此有任何经验或有任何解决方法的想法吗?

感谢您的回复!

最佳答案

我通过使用 docker-compose 文件创建共享卷来解决问题:

version: '3'

volumes:
share_place:

services:
php:
image: php:5-fpm-alpine
ports:
- 9000:9000
volumes:
- share_place:/var/www/app
nginx:
image: nginx:alpine
ports:
- 3000:80
volumes:
- share_place:/var/www/app

这将创建一个卷 share_place,它将在两个容器之间共享数据。

关于php - Docker 生产就绪 php-fpm 和 nginx 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com