Docker Compose
将多个服务分别创建不同的容器,然后一起运行
步骤
- 整理dockerfile文件/服务镜像配置
- 既可以将一个服务使用dockerfile构建,也可以直接在compose.yaml中直接构建
- 编写compose.yaml文件
- 执行
docker compose up -d
如果其他命名文件,则要指定-f /path/to/docker-compose.yaml
指令语法
version
指docker compose文件的版本,不同版本支持的语法不同,暂时使用3.8services
下面罗列各种服务(mysql,redis,微服务项目的单个服务等)- 服务名称,如果是自己通过
dockerfile
创建的,最终生成的镜像名称为:dockerfile-<服务名称>
,否则镜像名称就是image
基于的镜像
服务下面的指令语法:
image
基础镜像container_name
创建的容器名environment
环境变量volume
数据卷networks
网络(不同服务之间必须位于同一网络下才能互相访问)labels
标签build
基于的dockerfilecontext
放置dockerfile文件的路径,是一个目录dockerfile
指定具体的文件名
networks
位于哪一个网络下面ports
端口映射expose
端口暴露
模板文件
version: '3.8'
services:
mysql:
image: mysql:8.0.19
container_name: mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
- "/usr/dcoker-mysql/log:/var/log/mysql"
- "/usr/docker-mysql/data:/var/lib/mysql"
- "/usr/docker-mysql/conf:/etc/mysql/conf.d"
networks:
- mynetwork
webyannqng:
container_name: yannqingdemo1
labels:
- com.yannqing.description="彦青学习docker compose"
- com.yannqing.owner="yannqing <yannqing.com>"
build:
context: .
dockerfile: ./Dockerfile.dockerfile
ports:
- "6081:6081"
expose:
- 6081
networks:
- mynetwork
networks:
mynetwork:
external: true