php - Docker Compose - 部署中的符号链接(symbolic link)

标签 php nginx docker symlink docker-compose

我有一个具有这种结构的应用程序。

  • /path/releases
  • /path/releases/01012016
  • /path/releases/16012016
  • /path/releases/etc..

  • /path/dev(某些版本的符号链接(symbolic link))
  • /path/stag (某些版本的符号链接(symbolic link))
  • /path/stable(符号链接(symbolic link)到一些 版本)

我的 docker-compose.yml 看起来像这样:

nginx:
    ...
    volumes_from:
      - data

php:
    ...
    volumes_from:
      - data

data:
    volumes:
      - /path/stable:/var/www

我知道 Docker 会解析符号链接(symbolic link)。我想在部署之前我只是重新创建 数据容器,没关系。但事实并非如此。

我必须重新创建所有从数据容器中获取卷的容器。

知道如何让它变得更好吗,我的意思是更好的自动化?删除符号链接(symbolic link)并将最新版本放入 docker-compose?将父文件夹标记为卷并通过相对符号链接(symbolic link)解析它?或任何其他解决方案。

哪种解决方案最适合您。最佳做法是什么。

谢谢。菲利克斯

最佳答案

如果您只是想让它更自动化,可以使用 docker-compose up --force-recreate 在一个 docker-compose.yml 中重新创建所有容器。

另一个解决方案是:

/path:/var

…然后 ln -s/path/releases/06012016/path/www 当你想改变的时候。

我不太喜欢这个解决方案,因为它会将您的所有版本都暴露在您的容器中。我宁愿选择完全重启 --force-recreate。

关于php - Docker Compose - 部署中的符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080224/

相关文章:

php - 依赖注入(inject)如何知道要传递哪些变量?

javascript - 在 Javascript 和 PHP 中十进制到 RGB

rest - 如何删除远程地址?

java - Docker CMD + ENTRYPOINT 与命令行行为不匹配

php - 如何在数据进入 mysql 数据库的同时创建表单而不刷新页面?

javascript - AJAX只保存输入的第一个字母

ruby-on-rails - nginx 和 unicorn bad gatewayconnect() to unix :/tmp/mobile. socket failed AND failed (111: Connection refused)

angularjs - 在 Nginx 上部署 AngularJS 应用程序

php - 从 Docker 容器内部使用 XDebug 进行远程调试不起作用

angular - Headless Chrome 完成执行 Karma 单元测试时,Docker 任务失败