docker-compose:使用.envpath问题

我试图运行一个dockerized项目,这是与Capistrano部署

我的应用程序位于/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

有没有人有一个想法,为什么这是失败?

干杯!

好吧,经过多次尝试,我已经设法启动我的应用程序。

我试图做的是:

  1. 使用Capistrano的“链接文件”function在当前目录下对我的.env文件进行编辑:/current/.env – > ../../shared/.env不幸的是,由于docker-compose似乎无法find文件或文件夹不在其执行的目录内。

  2. 从Capistranoconfiguration中删除.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 

最后的解决scheme工作,我目前正在使用这一个我的部署。 如果我发现新问题或改进,我将在此问题上发布更新。

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

干杯