【问题标题】:how to access env variables from docker compose file如何从 docker compose 文件访问环境变量
【发布时间】:2019-08-02 18:29:49
【问题描述】:

我在 docker compose 中有两个服务 1. 一个应用程序和 2. db 服务(可以是 Mysql 或 Postgres)。根据在 compose 文件中为 db 服务设置的环境变量,我需要为 sqlalchemy 引擎创建 DATABASE_URI。如何在 app docker 容器中访问这些 ENV?

我正在尝试访问 docker-compose 文件中设置的环境,而不是 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"

【问题讨论】:

  • 您是否尝试过以与从 Python 访问任何其他环境变量相同的方式访问它?
  • 是的,但一无所获。
  • 那么请给minimal reproducible example。对于它的价值,我目前正在处理的项目将环境变量从我的环境中,通过撰写文件,进入容器,进入代码(主要是 JS,但我们确实有一些 Python)就好了。
  • 我想在我的应用容器内的 compose 文件中为 db (for.eg postgres db) 设置多余的 env vars 以构造 database_uri。

标签: python docker docker-compose


【解决方案1】:

@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"```

【讨论】:

    【解决方案2】:

    如果你想构建你自己的database_uri,你需要为你的postgres数据库设置环境变量。

    environment:
    POSTGRES_DB: dev
    POSTGRES_USER: username
    POSTGRES_PASSWORD: pw
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-17
      • 2019-11-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多