docker-compose 介绍
参考官网: https://docs.docker.com/compose/compose-file/compose-file-v3/
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker-compose的安装
pip install docker-compose
docker-compose 实例
docker-compose.yml
version: '3'
services:
mysql:
image: docker.io/mysql:5.7
container_name: mysql
privileged: true
environment:
- MYSQL_DATABASE=fastrunner
- MYSQL_ROOT_PASSWORD=gfc123456
volumes:
- ./mysql:/var/lib/mysql # 映射mysql数据
ports:
- "3306:3306"
restart: always
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
rabbitmq:
image: rabbitmq:management-alpine
container_name: rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
restart: always
ports:
- "15672:15672"
- "5672:5672"
fasterunner:
image: fastrunner:latest
build:
context: .
dockerfile: Dockerfile
container_name: fastrunner
privileged: true
restart: always
depends_on:
- mysql
- rabbitmq
volumes:
- .:/app
ports:
- "8001:8001"
command: /bin/sh -c "chmod a+x wait-for && ./wait-for mysql:3306 && ./wait-for rabbitmq:5672 && chmod a+x start.sh && ./start.sh && echo fastrunner start succcess!"
networks: # 指定了内网,可以在配置文件中直接使用容器名字,但是需要先在宿主机创建网络
default:
external: true
name: mt-net
docker-compose.yml 指令解释
image
image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像build
服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径。Compose将会利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。
dockerfile
使用dockerfile文件来构建,必须指定构建路径commond
使用command可以覆盖容器启动后默认执行的命令。depends_on
用于解决容器的依赖、启动先后的问题ports
用于映射端口的标签volumes
挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER]格式expose
暴露端口,但不映射到宿主机,只允许能被连接的服务访问。仅可以指定内部端口为参数
docker-compose 命令
查看docker-compose 命令帮助
docker-compose -h
拉取服务依赖的镜像
docker-compose pull
构建(重新构建)项目中的服务容器
docker-compose build
运行服务容器
docker-compose up -d
列出项目中所有的容器
docker-compose ps
停止正在运行的容器
docker-compose stop
启动已经存在的服务容器
docker-compose start
重启项目中的服务
docker-compose restart
删除所有(停止状态的)服务容器
docker-compose rm
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。