docker-compose 使用
官方文档
https://docs.docker.com/compose/compose-file/compose-file-v3/
命令说明
早期 docker-compose 是一个独立的命令,需要另外安装。docker 之后,docke-compose 已经集成到了 docker 命令里变成了子命令 compose,使用 docker compose 就可以。
应该是在 21.11 月后的 docker 版本里就有了 compose 这个子命令。
配置文件
# yaml 配置实例
version: '3'
services:
web:
build: .
stdin_open: true # docker run -i
tty: true # docker run -t
privileged: true
ports:
- "5000:5000"
environment:
- ENV=online
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
networks:
- front-tier
- back-tier
redis:
image: redis
volumes:
logvolume01: {}
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
指令说明
image
services:
web:
image: my_web
web 是用户自定义的,来标识这个服务的名称。
image 是镜像的名称,如果不存在会去拉取。
image 支持的格式
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
build
build 用于指定一份 Dockerfile,用于在启动时通过这份配置构建镜像。
build 的值都是一个目录,可以是相对目录也可以是绝对目录。
# 如果需要指定具体的 Dockerfile,可以使用 dockerfile 参数
build:
context: ../
dockerfile: path/of/Dockerfile
# 构建并且指定镜像名称
build: ./dir
image: webapp:tag
# 类型 docker 的 ARG 命令
build:
context: .
args:
- buildno=1
- password=secret
command
command 用于覆盖容器启动后执行的默认命令
command: [bundle,exec, thin, -p, 3000]
container_name
指定容器名称
container_name: app
depends_on
用于指定容器之间的依赖关系,这样可以保证某个容器启动之前依赖的容器会先启动。
version: "3"
services:
web:
image: my_web
depends_on:
- redis
redis:
image: redis-alphine
dns
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
dns_search 和这个也类似。
tmpfs
挂载临时目录到容器内部。
tmpfs: /run
tmpfs:
- /run
- /tmp
entrypoint
用于覆盖 dockerfile 中的 ENTRYPOINT 指令的结果。
entrypoint: /code/start.sh
env_file
可以专门定义一个用于存放变量的文件
env_file: .env
environment
设置镜像里的环境变量。
environment:
- ENV=online
links
用于连接到服务中的其他容器
links:
- redis
这样将会在该容器里添加 redis 的 host 信息。环境变量也会被创建。
external_links
用于连接外部的容器(例如直接使用 docker run 启动的)。
前提是这些外部容器中至少有一个容器是连接到与项目服务的同一个网格里。
external_links:
- redis_global
extra_hosts
用于往 extra_hosts 里添加记录
extra_hosts:
- "somehost:162.242.1.1"
labels
向容器添加元数据。
labels:
- description:"doc"
logging
用于配置日志服务
logging:
driver: syslog
volumns
# 语法 /host/path:/container/path
# host path 可以是相对路径
volumes:
- /var/opt/my_website/dist:/usr/share/nginx/html:ro
Read other posts