首页 > 解决方案 > Docker为同一个服务提供不同的环境变量

问题描述

我目前正在用 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"

标签: dockerdocker-compose

解决方案


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

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

推荐阅读