docker compose

images

从指定的镜像中启动容器,可以是存储仓库、标签以及镜像ID。

command

执行命令,会覆盖容器启动后默认执行的命令(dokcer file中CMD指定的命令)

container_name

指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量

environment

添加环境变量。您可以使用数组或字典。任何布尔值(true、false、yes、no)都需要用引号括起来,以确保它们不会被 YML 解析器转换为 True 或 False。
一般 arg 标签的变量仅用在构建过程中。而environment和 Dockerfile 中的ENV指令一样会把变量一直保存在镜像、容器中,类似docker run -e的效果。

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET

networks

加入网络,引用顶级networks下条目

network

设置网络容器连接,none 表示在构建期间禁用网络

ports

暴露端口,与-p相同, 但是端口不能低于60
共有三种写法:

  • 指定两个端口 ( HOST:CONTAINER)
  • 仅指定容器端口(为主机端口选择了一个临时主机端口)。
  • 指定要绑定到两个端口的主机 IP 地址(默认为 0.0.0.0,表示所有接口):( IPADDR:HOSTPORT:CONTAINERPORT)。如果 HOSTPORT 为空(例如127.0.0.1::80),则会选择一个临时端口来绑定到主机上。

    ports:
    - "3000"
    - "3000-3005"
    - "8001:8000"
    - "9090-9091:8080-8081"
    - "49100:22"
    - "127.0.0.1:8001:8001"
    - "127.0.0.1:5000-5010:5000-5010"
    - "127.0.0.1::5000"
    - "6060:6060/udp"
    - "12400-12500:1240"

expose

expose 暴露端口给link到当前容器的容器,或者在同一个netwokrs下的容器。

将当前容器的 9000 3000 端口暴露给其他容器
expose: 
  - "9000" 
  - "3000" 

links 连接到另一个容器

external_links

链接到 docker-compose.yml 外部的容器,甚至并非 Compose 项目文件管理的容器。

external_links:
  - redis_1
  - project_db_1:mysql
  - project_db_1:postgresql

dockerfile 指定构建镜像的 Dockerfile 文件名

args 构建参数,只能在构建过程中访问的环境变量

cache_from 缓存解析镜像列表

labels 设置构建镜像的元数据

shm_size 设置/dev/shm此构建容器的分区大小

target 多阶段构建,可以指定构建哪一层

depends_on

表示服务之间的依赖关系。服务依赖会导致以下行为:

docker-compose up 按依赖顺序启动服务。在下面的例子中,db和redis在 web之前启动。
docker-compose up SERVICE自动包含SERVICE的依赖项。在下面的示例中,docker-compose up web还创建并启动db和redis。
docker-compose stop按依赖顺序停止服务。在以下示例中,web在db和redis之前停止。

version: "3.9"
services:
  web:
    build: .
    depends_on:
      - db
      - redis1
  redis:
    image: redis
  db:
    image: postgres

devices

设备映射列表。使用与--devicedocker 客户端创建选项格式相同。

devices:
  - "/dev/ttyUSB0:/dev/ttyUSB0"

extra_hosts

添加主机名映射。使用与 docker 客户端--add-host类似。

extra_hosts:
  - "somehost:162.242.195.82"
  - "otherhost:50.31.209.229"
会往/etc/hosts文件中添加一些记录,启动之后查看容器内部 hosts可以看到:

162.242.195.82  somehost
50.31.209.229   otherhost

logging

日志记录配置。

version: "3.9"
services:
  some-service:
    image: some-service
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"
network_mode

network_mode

网络模式:使用与 docker 客户端--network相同,可以使用特殊形式service:[service name]

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

restart

  • no 是默认的重启策略,在任何情况下都不会重启容器。
  • always 指定时,容器总是重新启动。
  • on-failure 如果退出代码指示失败错误,则该策略会重新启动容器。
  • unless-stopped 总是重新启动容器,除非容器停止(手动或其他方式)。

    restart: "no"
    restart: always
    restart: on-failure
    restart: unless-stopped

    参考链接:
    docker compose 配置文件 .yml 全面指南

Kafka 配置

  • listeners [KAFKA_LISTENERS]: broker 服务器要监听的地址及端口,默认是 localhost:9092,0.0.0.0的话,表示监听本机的所有ip地址。

    KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093
    KAFKA_ADVERTISED_LISTENERS: INSIDE://172.28.0.100:9092,OUTSIDE://localhost:9093
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    KAFKA_BROKER_ID: 0
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
    KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE

参考链接:


Architecture
0 声望0 粉丝

知其然, 更要知其所以然~


« 上一篇
GoLang操作Json
下一篇 »
Defer