作者:5257wals_220 | 来源:互联网 | 2023-02-05 16:37
我在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;
来自Symfony的示例模式
这在开发中很棒,但我不知道如何将其转换为生产就绪状态.在生产中挂载app目录真的是不好的做法(如果我没错的话).在最好的情况下,我将应用程序源代码复制到容器中并使用此预编译代码(COPY . /var/www/app
in Dockerfile
),但在这种情况下是不可能的,或者我不知道如何.
我需要在两个contatiner(nginx容器和php-fpm容器)之间共享应用程序源代码,因为需要它的展位.
当然我可以制作自己的nginx和php-fpm容器并添加COPY . /var/www/app
到它们中,但我认为这是错误的方式因为我重复代码和整个构建过程(安装依赖项,构建源代码等等)必须是在两个(nginx/php-fpm)容器中.
我尝试搜索,但我不知道如何解决这个问题.很多文章都展示了如何使用docker-compose文件和使用--volume挂载代码,但我没有找到任何示例如何在生产中使用它(没有卷).
对我来说只有一个可接受的解决方案(在这个时间)是使用nginx和php-fpm组成一个容器,但我不确定什么时候是一个好方法(我试图找到最佳实践).
你有这方面的经验或任何想法如何解决它?
谢谢你的回复!