【问题标题】:Docker different environment variables for the same serviceDocker为同一个服务提供不同的环境变量
【发布时间】:2020-10-07 14:08:49
【问题描述】:

我目前正在用 python 构建一个网络爬虫。但是为了访问特定页面,我需要一个 API 密钥,并且该密钥在请求方面受到严格限制。所以,我的想法是创建 python 脚本并将 API 密钥设置为每个容器的环境变量。这样,我可以以更大的吞吐量进行抓取。

现在,我的问题:

我知道您可以通过docker-compose.yml 设置环境变量,但这样做不会使该文件可以通过 git 上的公共存储库共享。有没有比通过撰写文件更好的方法来为每个容器设置环境变量?我正在考虑 .env 文件,但这使它成为 python 脚本中的噩梦,因为我必须在我的文件夹中以不同的方式命名每个文件。

这就是我的撰写文件现在的样子

version: '3'
services:
  user-list_1:
    build: .
    environment:
      - API_KEY="1212_323131-23"
  user-list_2:
    build: .
    environment:
      - API_KEY="API_KEYFOR2"

【问题讨论】:

  • env_file 可以是任何你想要的名字。
  • 我尝试使用 ``` env_file: - .env.container1 ``` 但这意味着 .env.container1 被复制到容器中,不是吗?如果我使用load_dotenv 它将无法工作
  • load_dotenv 是 Python 函数吗?如果是这样,您将改用 Docker 卷。否则,你只需要 os.env
  • 啊,我想念文档。我认为当您从 docker-compose 加载 .env 时,我需要使用 load_dotenv 但事实证明它们已经设置在容器中。感谢您的帮助!

标签: docker docker-compose


【解决方案1】:

只需在docker-compose.yml 中使用env_file 选项,它将直接为该容器设置环境变量。无需在 python 中阅读.env。代码如下所示:

version: '3'
services:
  scraper-1:
    build: .
    ports:
    - "9999:5000"
    env_file:
      - .env.container1
  scraper-2:
    build: .
    ports:
      - "8888:5000"
    env_file:
      - .env.container2

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多