[英]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.