问题描述
我们有一个开发和生产系统,该系统使用在docker环境中运行的symfony 5 + Nginx + MysqL服务。 由于此问题,目前Nginx Web服务器在与symfony服务相同的容器中运行:
- 在我们的开发环境中,我们能够将symfony源代码挂载到docker容器中(通过docker-compose文件)。
- 在生产环境中,我们需要交付包含所有内部源代码的容器,因为我们不能将源代码放置在服务器上。因此,服务器上没有文件夹可用来挂载源代码。 不幸的是,Nginx也需要源节点来做出路由决策,因此我们决定将symfony和Nginx服务放到一个容器中。
现在,我们希望通过在其自己的容器中运行每个服务来对其进行清理,以获得更好的解决方案:
version: '3.5'
services:
PHP:
image: docker_sandBox
build: ../.
...
volumes:
- docker_sandBox_src:/var/www/docker_sandBox // <== VOLUME
networks:
- docker_sandBox_net
...
Nginx:
image: Nginx:1.19.0-alpine
...
volumes:
- ./Nginx/server.conf:/etc/Nginx/conf.d/default.conf:ro
- docker_sandBox_src:/var/www/docker_sandBox <== VOLUME
...
networks:
- docker_sandBox_net
depends_on:
- PHP
MysqL:
...
volumes:
docker_sandBox_src:
networks:
docker_sandBox_net:
driver: bridge
一种可能的解决方案是使用将Nginx服务与symfony服务连接的命名卷。这样做的问题是,在更新我们的symfony图像时,音量会保留旧的更改。因此,只有在我们手动删除该卷之后,才能进行更新。
是否有更好的方法来解决此问题?可能是一个在部署新映像时能够覆盖其内容的卷。或不需要在其自己的容器中使用symfony源代码的Nginx配置。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)