我正在尝试使用Phundament 4.3.0-beta6,Docker 1.11.0和Docker Compose 1.7.0的全新安装来打包Yii2 Web应用程序。主机是基于Ubuntu的Linux Mint 17.3。
在开发环境中,一切工作都很好,但是我找不到正确构建生产镜像的方法。
我已经使用过旧版本的Phundament和Docker,它们在相同的问题上运行,因此我很确定自己没有遇到错误:我只是误解了一些东西。
问题是,用于本地开发的docker-compose文件(docker-compose.override.yml,覆盖docker-compose.yml)正在php和nginx容器上都安装了根项目文件夹:
volumes:
- .:/app
进行一些自定义后,我重新构建了php容器,将应用程序代码成功添加到了该容器中(按照Dockerfile中的指示),因此我可以编辑docker-compose.override.yml文件,从php容器中删除
volume
指令,一切正常。但是,当我对nginx容器执行相同操作并运行
docker-compose up -d
时,nginx给我返回了404。这意味着它没有在php容器中找到登录页面。当我挂载项目文件夹卷时,它会找到它。我想这不是预期的行为...我做错了什么?
最佳答案
基本上,nginx
只需要PHP镜像的web
文件夹中的index.php
和assets/
即可。
因此,您可以像这样使用volumes
和volumes_from
:
php:
volumes:
- /app/web
nginx:
volumes_from:
- php
另一种选择是以某种方式配置
nginx
,它将所有请求转发到PHP容器,但是静态文件实际上并不需要。注意! 在重新部署应用程序时,可能需要对PHP和nginx容器进行
kill
和rm -v
才能在卷上应用更改。随时提出问题,或者您对改进有想法...
全面披露:我是Phundament的核心开发人员。
关于docker - 将Phundament Web应用程序移至生产环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36761213/