2016-12-14 135 views
0

定义的附加ENV文件我都疯了我的搬运工,compose.yml内env_file设置。 当我命名文件.env并把它放在我的项目的一切工作正常。有这个env文件的主要观点是有多个环境(开发,分期,生产),我做了我的设置。 尽快将我的文件命名为不同(例如dev.env并将其放入env文件夹中),并尝试将其加载到我的docker-compose文件中,它将无法工作。搬运工,撰写不加载YAML文件

我举一个简单的例子来说清楚。 为了简单起见,我使用了一个变量DC_DOCKERFILE,其中我定义了要加载的dockerfile。

文件:.env在根文件夹:

COMPOSE_PROJECT_NAME=test 
DC_DOCKERFILE=./Dockerfile.bash.dev 

文件:docker-compose.yml

version: "2" 

services: 
    bash: 
    build: 
     context: . 
     dockerfile: ${DC_DOCKERFILE} 

docker-compose config显示一切都很酷,并建立作品还有:现在

networks: {} 
services: 
    bash: 
    build: 
     context: /devops/myproject 
     dockerfile: ./Dockerfile.bash.dev 
version: '2.0' 
volumes: {} 

这让我非常惊讶:

  • 在项目的根目录创建一个文件夹ENV
  • 移动.ENV到./env/dev.env
  • 添加env_file: ./env/dev.env我的搬运工,compose.yml内

ENV内容长相像上面一样,所以我不会再发布内容。

我的新docker-compose.yml

version: "2" 

services: 

    bash: 
    env_file: ./env/dev.env 
    build: 
     context: . 
     dockerfile: ${DC_DOCKERFILE} 

只更改,添加env_file设置。

,现在我docker-compose config给了我这样的:

networks: {} 
services: 
    bash: 
    build: 
     context: /devops/myproject 
     dockerfile: '' 
    environment: 
     COMPOSE_PROJECT_NAME: test 
     DC_DOCKERFILE: ./Dockerfile.bash.dev 
version: '2.0' 
volumes: {} 

说些什么?黑客是我的码头文件设置?

当然 docker-compose build

不喜欢太与困扰:

docker-compose build --force-rm --no-cache                     
WARNING: The DC_DOCKERFILE variable is not set. Defaulting to a blank string. 
Building bash 
ERROR: Cannot locate specified Dockerfile: Dockerfile 

变量得到加载,但不知何故没有分配。 所以我不明白。 我可能是错的,我不能在Docker-compose.yml文件中使用docker-compose的env文件。会觉得它需要首先通过docker-compose参数或其他东西加载,但在我花了这么多时间后,我想知道如果我可以加载它或不:) :)

感谢您的帮助和地狱耶开源和真棒社区。

和平出

回答

1

.env文件存在于文件夹搬运工-撰写命令被执行时,这些环境变量被用作搬运工-撰写执行与变量置换环境变量。 (https://docs.docker.com/compose/env-file/)。

然而,当你定义env_file选项为您服务,该服务将得到该文件作为环境变量,这些变量和那些不用于变量替换。

+0

喜劳里,感谢您的回答。这是否意味着我只能有一个env文件来做我需要的东西,对吧?那么人们如何通过最佳实践来处理不同的环境?我可以让我的变量动态变化,并根据shell env或其他方式设置它们,但只想学习docker的方式来做正确的事情。谢谢 – bin2hex

+0

是的,根据文档,你只能有一个env文件。 – Lauri

+0

好的,谢谢你的帮助! – bin2hex

相关问题