编写 docker-compose.yml 文件
version: '3'
services:
mysql:
hostname: mysql
image: mysql:5.7.26
# network_mode: "host" # 如果需要容器使用宿主机IP(内网IP),则可以配置此项
container_name: mysql # 指定容器名称,如果不设置此参数,则由系统自动生成
restart: always # 设置容器自启模式
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置utf8字符集
environment:
- TZ=Asia/Shanghai # 设置容器时区与宿主机保持一致
- MYSQL_ROOT_PASSWORD=root # 设置root密码
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
- ./mysql/data:/var/lib/mysql/data # 映射数据库保存目录到宿主机,防止数据丢失
- ./mysql/my.cnf:/etc/mysql/my.cnf # 映射数据库配置文件
ports:
- "3306:3306"
privileged: true
redis:
hostname: redis
image: redis:5.0.4
container_name: redis
restart: always
command: redis-server /etc/redis.conf # 启动redis命令
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
- ./redis/data:/data
- ./redis/redis.conf:/etc/redis.conf
ports:
- "6379:6379"
privileged: true
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- "2181:2181"
rabbitmq:
image: rabbitmq:management-alpine
restart: always
container_name: rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "15672:15672"
- "5672:5672"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
consul:
restart: always
image: consul:latest
restart: always
container_name: consul
ports:
- 8300:8300
- 8301:8301
- 8301:8301/udp
- 8302:8302
- 8302:8302/udp
- 8500:8500
- 8600:8600
- 8600:8600/udp
command: agent -server -data-dir=/consul/data -config-dir=/consul/config -bootstrap -node=consul1140_0 -client=0.0.0.0
es-master:
image: elasticsearch
container_name: es-master
restart: always
volumes:
- ./ek/master/data:/usr/share/elasticsearch/data:rw
- ./ek/master/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./ek/master/logs:/user/share/elasticsearch/logs:rw
ports:
- "9200:9200"
- "9300:9300"
privileged: true
es-node1:
image: elasticsearch
container_name: es-node1
restart: always
volumes:
- ./ek/node1/data:/usr/share/elasticsearch/data:rw
- ./ek/node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./ek/node1/logs:/user/share/elasticsearch/logs:rw
privileged: true
es-node2:
image: elasticsearch
container_name: es-node2
restart: always
volumes:
- ./ek/node2/data:/usr/share/elasticsearch/data:rw
- ./ek/node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./ek/node2/logs:/user/share/elasticsearch/logs:rw
privileged: true
创建并启动容器
如果文件名就叫做docker-compose.yml则可以不适用-f选项指定文件路劲,up选项启动容器,-d选项以守护模式运行
docker-compose -f docker-compose.yml up -d
如果要批量停止容器并清除容器,可以使用down命令
docker-compose -f docker-compose.yml down
如果要重新构建容器,可以使用–build选项
docker-compose -f docker-compose.yml up --build -d
如果启动失败,可以查看容器日志信息获取帮助
docker logs 容器名词或容器ID # 既docker-compose.yml文件参数container_name指定的值