Re-using environment variables in docker-compose.yml

后端 未结 3 2102
隐瞒了意图╮
隐瞒了意图╮ 2020-12-07 16:45

Is it possible to re-use environment variables that are shared among multiple containers?

The idea is to avoid duplication, as illustrated in this example:



        
3条回答
  •  萌比男神i
    2020-12-07 17:13

    The extends option can be nice but it's not supported in 3.x compose files. Other ways to go are:

    1. Extension fields (compose file 3.4+)

      If you can use 3.4+ compose files, extension fields are probably the best option:

      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'
      
    2. env_file directive

      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
      
    3. .env file in project root (or variables at actual compose environment)

      Variables from .env file can be referenced in service configuration:

      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
      

提交回复
热议问题