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
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
参考链接:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。