Skip to content

docker-compose语法

基础模板

https://docs.docker.com/compose/compose-file/03-compose-file/

yml
version: "3.8" # version是compose文件格式版本号 需要和Docker Engine对应 https://docs.docker.com/compose/compose-file/compose-file-v3/

services:
  service1:
    image: image_name:version  #指定镜像
    container_name: service1       #容器名
    environment: #指定环境变量	
      - A=1
      - B=2
    restart: always            #重启策略
    volumes: #数据卷挂载
      - /etc/localtime:/etc/localtime:ro # 挂载宿主机文件
      - data:/opt/data # 具名卷挂载
    ports: #端口映射配置
      - "6610:6610"
      - "6611:6611"
    privileged: true # 将服务容器配置为以提升的权限运行
    links: #定义到另一个服务中的容器的网络链接,可以在此容器直接用服务名访问另一个容器,links也有服务之间的隐式依赖关系,因此也决定了服务启动的顺序。
      - service2
    env_file:
      - ./a.env
      - ./b.env
    devices:
      - "/dev/ttyUSB0:/dev/ttyUSB0"
      - "/dev/sda:/dev/xvda:rwm"
    dns:
      - 8.8.8.8
  service2:
    build: #构建配置
      context: .               #指定包含Dockerfile的目录或一个git仓库的url
      dockerfile: webapp.Dockerfile   #指定要使用的Dockerfile名称,默认找Dockerfile,和dockerfile_inline参数不能同时使用
      dockerfile_inline: #直接在compose文件里写Dockerfile指令 和dockerfile参数不能同时使用
        FROM xxx
        RUN some command
    container_name: service2
    network_mode: "host"      #配置网络模式,none(禁用所有容器网络)/host(使用宿主接口)/service:{name}(只能访问指定服务)
    networks: #指定容器连接的docker网络
      - netA
      - netB
    depends_on: #依赖某个服务,决定了服务的启动和关闭顺序
      - service3

volumes:
  data:
    
networks:
  netA:
  netB: