我可以在docker compose中设置一个变量并多次使用它来获得更清晰的代码吗?

我可以在docker compose中设置一个变量并多次使用它来获得更清晰的代码吗?,docker,docker-compose,yaml,Docker,Docker Compose,Yaml,我可以在docker compose yml文件中设置一个变量以获得更清晰的代码吗 例如,如果有一个值我使用了不止一次,并且我想用一个声明来保存它 比如: version: '2.4' ValueToPassFromVariable: '2020-10-10 12:00:00' services: img1: image: img1 build: context: . args: - STARTDATE=ValueToPas

我可以在docker compose yml文件中设置一个变量以获得更清晰的代码吗

例如,如果有一个值我使用了不止一次,并且我想用一个声明来保存它

比如:

version: '2.4'
ValueToPassFromVariable: '2020-10-10 12:00:00'

services:
  img1:
     image: img1
     build:
       context: .
       args:
         - STARTDATE=ValueToPassFromVariable
       dockerfile: DockerFileImg1
       
  img2:
     image: img2
     build:
       context: .
       args:
         - STARTDATE=ValueToPassFromVariable
       dockerfile: DockerFileImg2
我想在
ValueToPassFromVariable
中保存一些值并使用它几次,我可以这样做吗?

您有两个选项:

  • 创建.env文件并将其放入docker compose根目录。 .env文件的示例:
  • 使用命令直接添加环境变量以生成计算机
  • 对于linux

    export STARTDATE=value
    
    窗户

    setx STARTDATE value
    
    之后,在docker compose中,您需要使用此值

    例如:

    version: '2.4'
    ValueToPassFromVariable: '2020-10-10 12:00:00'
    
    services:
      img1:
         image: img1
         build:
           context: .
           args:
             - STARTDATE=${STARTDATE}
           dockerfile: DockerFileImg1
           
      img2:
         image: img2
         build:
           context: .
           args:
             - STARTDATE=${STARTDATE}
           dockerfile: DockerFileImg2
    

    有关更多详细信息,请参阅。

    如果您更新到docker compose的较新版本,您可以通过以下方式获得通用重用:

    版本:“3.8”
    x-args:&args
    args:
    -起始日期=2020-10-10 12:00:00
    服务:
    img1:
    图片:img1
    建造:
    上下文:。
    
    也许第二个选项对我很有用,但通常我只想保存变量,而不是写两次它的值,我不想在我的机器上设置变量,尽管这可能是一个好主意。如果你不想在你的机器上设置环境变量,你可以在你的项目中创建.env文件并使用它来代替设置环境变量。当然,在某些情况下,它也可能是一个好方法,但因为它与语法更相关,为了生成更简单的代码,它不想在其他文件中进行真正的更改
    version: '2.4'
    ValueToPassFromVariable: '2020-10-10 12:00:00'
    
    services:
      img1:
         image: img1
         build:
           context: .
           args:
             - STARTDATE=${STARTDATE}
           dockerfile: DockerFileImg1
           
      img2:
         image: img2
         build:
           context: .
           args:
             - STARTDATE=${STARTDATE}
           dockerfile: DockerFileImg2