mas*_*cai 9 python django docker docker-compose
项目树
/backend
.env.dev
docker-compose-dev.yml
/project
Run Code Online (Sandbox Code Playgroud)
我有以下警告:
docker-compose -f docker-compose-dev.yml up --build # i am in the /backend directory
WARNING: The DB_USER variable is not set. Defaulting to a blank string.
WARNING: The DB_PASSWORD variable is not set. Defaulting to a blank string.
WARNING: The DB_NAME variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
这意味着 docker compose 看不到我的环境文件。我该如何修复它?
docker-compose-dev.yml
services:
django:
build: ./project # path to Dockerfile
command: sh -c "
sleep 3 && gunicorn -w 8 --bind 0.0.0.0:8800 core_app.wsgi"
volumes:
- ./project:/project
- ./project/static:/project/static
- ./project/media:/project/media
- ./project/logs:/project/logs
expose:
- 8800
env_file:
- ./.env.dev
depends_on:
- db
db:
image: postgres:13-alpine
volumes:
- pg_data:/var/lib/postgresql/data/
expose:
- 5432
ports:
- "5435:5432"
env_file:
- ./.env.dev
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
.......
Run Code Online (Sandbox Code Playgroud)
如何启用 env 文件?
PS值在文件中设置.env.dev
DB_NAME=db_dev
DB_USER=postgres
DB_PASSWORD=passsss132132
ENV_TYPE=DEV
Run Code Online (Sandbox Code Playgroud)
更新 发现这种方式有效
docker-compose -f docker-compose-dev.yml --env-file=.env.dev up
Run Code Online (Sandbox Code Playgroud)
如果投诉来自docker (compose) 本身,请尝试:
./.env.dev为简单的.env.dev;.env.dev为.env(默认)并env_file从撰写中删除该条目。这肯定会起作用,然后你可以回去用env_file([1])来调查这个问题。现在我自己也面临着同样的问题——在类似的情况下试图将我的 JupyterHub的变量与注定要分配给 Jupyter Notebooks 的变量分开——我深入挖掘以更好地理解 Compose.env和的作用env_file:。
正如问题中已经告知的,使用选项--env-file可以解决问题。这是在名称与(默认)不同的文件中定义docker-compose (yaml)环境变量的正确答案.env。
env_file中的选项适用docker-compose.yaml于正在运行的容器:只有容器才能看到这些变量。
我最近发布了类似问题的类似答案:
[1] https://docs.docker.com/compose/env-file/
| 归档时间: |
|
| 查看次数: |
12598 次 |
| 最近记录: |