是否可以重用在多个容器之间共享的环境变量?
这个想法是为了避免重复,如本示例所示:

version: '2'

services:

  db:
    image: example/db
    ports:
      - "8443:8443"
    container_name: db
    hostname: db
    environment:
      - USER_NAME = admin
      - USER_PASSWORD = admin

svc:
  image: example/svc
  depends_on:
    - db
  ports:
    - "9443:9443"
  container_name: svc
  hostname: svc
  environment:
    - DB_URL = https://db:8443
    - DB_USER_NAME = admin
    - DB_USER_PASSWORD = admin

最佳答案

extends选项可能不错,但它是3.x撰写文件中的not supported。其他走的方法是:

  • Extension fields(撰写文件3.4+)

    如果可以使用3.4+组成文件,则扩展名字段可能是最佳选择:

    docker-compose.yml
    version: '3.4'
    
    x-common-variables: &common-variables
      VARIABLE: some_value
      ANOTHER_VARIABLE: another_value
    
    services:
      some_service:
        image: someimage
        environment: *common-variables
    
      another_service:
        image: anotherimage
        environment:
          <<: *common-variables
          NON_COMMON_VARIABLE: 'non_common_value'
    
  • env_file指令

    docker-compose.yml
    version: '3.2'
    
    services:
      some_service:
        image: someimage
        env_file:
          - 'variables.env'
    
      another_service:
        image: anotherimage
        env_file:
          - 'variables.env'
    

    variables.env
    VARIABLE=some_value
    ANOTHER_VARIABLE=another_value
    
  • 项目根目录中的
  • .env file
    (或实际撰写环境中的变量)

    .env文件中的变量可以在服务配置中引用:

    docker-compose.yml
    version: '3.2'
    
    services:
      some_service:
        image: someimage
        environment:
          - VARIABLE
    
      another_service:
        image: anotherimage
        environment:
          - VARIABLE
          - ANOTHER_VARIABLE
    

    .env
    VARIABLE=some_value
    ANOTHER_VARIABLE=another_value
    
  • 关于docker - 在docker-compose.yml中重用环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60420088/

    10-16 16:28
    查看更多