我正在尝试运行与Capistrano一起部署的dockerized项目

我的应用程序位于/opt/hosting/my-project目录中,具有以下结构:

/opt/hosting/my-project
    /current -> releases/201704251234/
    /releases/201704251234/
    /repo/
    revisions.log
    /shared/

目前,我想做的只是:
cd /opt/hosting/my-project/current
docker-compose -f docker-compose-production.yml up -d

失败并显示以下错误:
ERROR: Couldn't find env file: /opt/hosting/my-project/shared/.env
这是我的docker-compose-production.yml的内容
version: "2"

services:
    app:
        build: ./
        container_name: myproject_app
        env_file:
            - /opt/hosting/my-project/shared/.env
        expose:
            - 9000
        volumes:
            - /opt/hosting/my-project/:/opt/hosting

所需的.env文件存在,可读取,并且似乎不包含任何错误。这是其内容:
COMPOSE_PROJECT_NAME=myproject
我的docker-compose -v:
docker-compose version 1.9.0, build 2585387
有谁知道为什么会失败吗?

干杯!

最佳答案

好了,经过多次尝试,我已经成功启动了我的应用程序。

我试图做的是:

  • 使用Capistrano的“链接文件”功能将我的.env文件链接到当前目录中:
    /current/.env-> ../../shared/.env
    不幸的是,这失败了,因为docker-compose似乎没有找到不在其执行目录中的文件或文件夹。
  • 从Capistrano配置中删除.env链接文件,并通过自定义Capistrano任务手动将其复制。
    namespace :env_file do
      desc "Copy shared .env file"
      task :copy do
        on roles(:docker) do
          within current_path do
            execute "cp #{shared_path}/.env #{current_path}/.env"
          end
        end
      end
    end
    

  • 最后一种解决方案有效,目前我正在使用此解决方案进行部署。如果发现新问题或改进,我将发布有关此问题的更新。

    但是,docker-compose使用符号链接(symbolic link)的.env文件失败是否正常?

    干杯

    关于docker - docker-compose:.env路径问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43664621/

    10-16 16:52