如何从docker compose文件中访问env变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从docker compose文件中访问env变量相关的知识,希望对你有一定的参考价值。
我在docker compose中有两个服务1.一个应用程序和2.db服务(可以是mysql或Postgres)。根据在db服务的compose文件中设置的环境变量,我需要为sqlalchemy引擎创建DATABASE_URI。如何在app docker容器中访问这些ENV?
我试图访问docker-compose文件中的env set而不是Dockerfile。
下面是我的Docker-compose文件的外观
version: "3.7"
services:
myapp:
image: ${TAG:-myapp}
build:
context: .
ports:
- "5000:5000"
docker_postgres:
image: "postgres:latest"
environment:
- POSTGRES_PASSWORD=postgres
ports:
- "5432:5432"
答案
如果要构建自己的database_uri,则需要为postgres数据库设置环境变量。
environment:
POSTGRES_DB: dev
POSTGRES_USER: username
POSTGRES_PASSWORD: pw
另一答案
@jonrsharpe你是说我可以做这样的事情?
services:
myapp:
image: ${TAG:-myapp}
build:
context: .
environment:
- DB_USER=postgres
- DB_PASSWORD=postgres
- DB_HOST=docker_postgres
ports:
- "5000:5000"
docker_postgres:
image: "postgres:latest"
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
ports:
- "5432:5432"```
以上是关于如何从docker compose文件中访问env变量的主要内容,如果未能解决你的问题,请参考以下文章
如何从env_file获取docker-compose的端口?
docker-compose .env 与 direnv .envrc
来自 docker-compose .env 文件的多个 Docker 构建参数