docker - 将Phundament Web应用程序移至生产环境

标签 docker yii2 docker-compose phundament

我正在尝试使用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.phpassets/即可。

因此,您可以像这样使用volumesvolumes_from:

php:
  volumes:
    - /app/web
nginx:
  volumes_from:
    - php

另一种选择是以某种方式配置nginx,它将所有请求转发到PHP容器,但是静态文件实际上并不需要。

注意! 在重新部署应用程序时,可能需要对PHP和nginx容器进行killrm -v才能在卷上应用更改。

随时提出问题,或者您对改进有想法...

全面披露:我是Phundament的核心开发人员。

关于docker - 将Phundament Web应用程序移至生产环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36761213/

相关文章:

php - Yii2:isAjax 返回 false

node.js - Nginx 在通过 Docker-compose 运行时找不到上游 Node 应用程序

docker - 如何控制 docker-compose 构建顺序?

docker - Docker Compose v3 中的 volumes_from 等价物

docker - CircleCI './docker-compose.yml'服务 'version'没有任何配置选项

macos - 我可以在 docker 镜像中开发 react-native 应用吗

docker - 无法通过 docker-letsencrypt-nginx-proxy-companion 启用 ssl

php - Yii2 RBAC GII 完整性约束违反

php - 在 Kartik Gridview 数据列中自动换行

docker - Kubernetes Pod 因 CrashLoopBackOff 而失败