如何从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 构建参数

在 docker-compose 的 .env 文件中使用多行值

Docker-compose env文件不起作用

如何在 docker .env 文件中使用环境变量?