1. 安装docker-compose
- 1.1 手动下载地址
https://github.com/docker/compose/releases
- shell命令下载
$ sudo curl -L https://github.com/docker/compose/releases/download/2.17.12/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 1.2 添加执行权限
$ sudo chmod +x /usr/local/bin/docker-compose
- 1.3 创建快捷方式
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2. 编写docker-compose
- 2.1 环境文件.env
MYSQL=root:password@tcp(localhost:3306)/game?charset=utf8&parseTime=true&loc=Local
SLAVEMYSQL=root:password@tcp(localhost:3307)/game?charset=utf8&parseTime=true&loc=Local
REDIS=redis://:mima123456@redis:6379/1
version: '3'services:redis:image: redis:5.0.14restart: always# 容器内部暴露端口, 让连接容器访问expose:- 6379networks:- my-netcommand: redis-server --requirepass mima1234manager:image: manager:v1# 对外映射端口expose:- 8081# 依赖容器,其他服务启动才能启动这个depends_on:- redis# 启动多个容器,使用nginx可以自动负载均衡deploy:mode: replicated# 副本个数replicas: 3networks:- my-netenvironment:- MYSQL=${MYSQL}- SLAVEMYSQL=${SLAVEMYSQL}- REDIS=${REDIS}links:- redis# 其他compose文件的访问 ,使用external_links#external_links:# - redisnginx:image: nginx:latestports:- 18088:80networks:- my-netvolumes:- ./nginx/nginx.conf:/etc/nginx/nginx.conf- ./nginx/logs:/var/log/nginx- ./nginx/html:/usr/share/nginx/html- ./nginx/conf:/etc/nginx/conf.d
networks:my-net:driver: bridge
- expose容器暴露端口给同服务的容器
- ports容器暴露给主机的端口,可以直接外部访问
- deploy 部署副本容器
- depends_on依赖的服务,就是必须等依赖服务启动完成,本服务才会被创建
- links 同文件下的服务链接
- 2.2 不同docker-compose服务
version: '3'services:game:image: game:v1expose:- 11001- 11002- 9905env_file:- .envnetworks:- deploy_my-netexternal_links:- redisdepends_on:- redis# 环境变量需要等号environment:- GAMEID=1- MYSQL=${MYSQL}- REDIS=${REDIS}
networks:deploy_my-net:external: true
- networks 标注是external是表示从外部创建的网络
- 不同文件下的链接external_links
3. docker-compose常用命令
- 3.1 启动命令
- -f 指定docker-compose.yml文件
- 可选项[service-name]单独更新指定的服务
$ docker-compose up -d [service-name]
$ docker-compose -f docker-compose.yml -f docker-compose2.yml -up -d [serivce-name]
- 3.2 停止服务
- 可选项[service-name] 停止指定的服务
$ docker-compose stop [service-name]
- 3.3 停止和删除容器、网络、卷、镜像
- 停用移除所有容器以及网络相关
$ docker-compose down
- 3.4 查看日志
- –tail 指定查看最后行数
- -f 持续查看
$ docker-compose logs --tail 100 -f service-name
- 3.5 在指定服务上执行一个命令
- 指定服务执行ping www.baidu.com命令
$ docker-compose run service-name ping www.baidu.com