在 docker-compose.yml 中定义局部变量?

IMB*_*IMB 6 docker docker-compose

是否可以在 docker-compose.yml 中定义局部变量?

例如这样的事情:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: $APP_NAME
    container_name: $APP_NAME
Run Code Online (Sandbox Code Playgroud)

我可以在$APP_NAME同一个docker-compose.yml文件上定义 的值吗?

Siy*_*iyu 7

从 docker-compose 文件版本 3.4 开始,您可以x-在 compose 文件中定义顶级前缀部分。它将被解析为有效的 yml,但在创建服务、网络、卷等时被 compose 忽略...

version: '3.4'

x-var: &APP_NAME
  myimage

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: *APP_NAME
    container_name: *APP_NAME
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用此功能来定义“对象”,例如:

x-common: &common
  image: ${REGISTRY_URL}img:latest

services:
  master:
    <<: *common
Run Code Online (Sandbox Code Playgroud)