[英]Can't set a different name for .env file inside docker-compose
我正在为我们的项目重构和编写一个新的 dockercompose,我遇到了一些非常奇怪的问题。
我的dockercompose里面有不同的服务,每一个都有自己的.env文件。 当然,所有 .env 文件都在 docker-compose 文件的同一目录中。
为了简化我的测试,现在我只使用 docker-compose 中的一项服务。
如果我将 .env 文件命名为“.env”,一切正常,但是如果我尝试将其命名为“userservice.env”,docker compose 可以找到该文件,但它无法读取一些变量,例如 git 集线器访问密钥和用户名。
那是我的 docker-compose:
version: '3.8'
services:
db:
image: mariadb:10.5.2
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
container_name: exampledb
ports:
- "4040:3306"
volumes:
- ./initmysqldb:/docker-entrypoint-initdb.d
adminer:
image: adminer
restart: always
ports:
- "${DOCKER_ADMINER_HOST_PORT:-38088}:8080"
app-user-area:
image: user_area
build:
context: ./user-area
network: host
args:
GITLAB_ACCESS_KEY: "${GITLAB_ACCESS_KEY}"
GITLAB_LOGIN: "${GITLAB_LOGIN}"
NODE_VER: "${NODE_VER}"
ports:
- "${DOCKER_APP_HOST_PORT:-8088}:4000"
- "${DOCKER_DELVE_HOST_PORT:-48088}:40000"
env_file:
- userservice.env
restart: always
links:
- db
- adminer
.env 文件:
....other info
# GITLAB
# ------------------------------------------------------------------------------
GITLAB_ACCESS_KEY=git_access_key
GITLAB_LOGIN=git_login
...other info
如果我将文件命名为“userservice.env”(然后我当然也在 dockercompose 中调用它),控制台给我的错误是:
The "GITLAB_ACCESS_KEY" variable is not set. Defaulting to a blank string.
只有当“.env”文件被称为“userservice.env”时才会发生这种情况。 奇怪的是,显然 dockercompose 可以找到 .env 文件(如果我将其命名为“example.env”而不更改 docker-compose 中的名称,则该进程无法运行并出现“userservice.env not found”错误)但它不能只读取里面的环境变量。
最后,其他奇怪的事情是,如果我添加其他服务,其中一个有一个“.env”文件,其他有“custom1.env”、“custom2.env”……文件,一切正常。 看起来 docker 至少需要一个名为“.env”的文件。
任何帮助,将不胜感激。
完全是我的错,我混合了 .env 和 env_file。
为了解决我的问题,我在 docker-compose 的同一目录中创建了 a.env,其中包含 compose 调用的所有变量。
在 env_file 部分中,我传递了服务使用的 .env 文件。
基本上,我们必须记住 .env 不同于 env_file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.