Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker compose:存在.env路径问题_Docker_Environment Variables_Capistrano - Fatal编程技术网

docker compose:存在.env路径问题

docker compose:存在.env路径问题,docker,environment-variables,capistrano,Docker,Environment Variables,Capistrano,我正在尝试运行一个使用Capistrano部署的停靠项目 我的应用程序位于/opt/hosting/My project目录中,结构如下: /opt/hosting/my-project /current -> releases/201704251234/ /releases/201704251234/ /repo/ revisions.log /shared/ 目前,我想做的只是: cd /opt/hosting/my-project/curre

我正在尝试运行一个使用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
此操作失败,出现以下错误:

错误:找不到env文件:/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\u PROJECT\u NAME=myproject

我的docker compose-v:

docker compose 1.9.0版,内部版本2585387

有人知道为什么会失败吗


干杯

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

我试着做的是:

  • 使用Capistrano的“链接文件”功能对当前目录中的my.env文件进行符号链接: /当前/.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使用symlinked.env文件失败是否正常


    干杯

    我认为您的docker compose文件无法使用项目目录之外的内容,您需要将您的
    共享的.env
    文件移动到文件夹
    当前的
    中,否则…@dzof31不幸的是,我需要将.env文件保留在此目录中,因为应用程序是使用Capistrano部署的。“共享”文件夹包含在各种部署过程中不应更改的所有文件。明天我将尝试将此文件移动到与docker compose文件相同的级别,以查看它是否以这种方式工作,如果是这样,我将更改部署过程。