一.引言
Docker-Compose相比DockerFile运行一个容器而言,Compose可以一个定义和运行一组容器,用来简化多容器环境的管理和部署的场景。通过Docker-Compose,开发者可以使用YAML文件来配置一组应用服务,并且只需一个简单的命令即可创建和启动所有服务。这种方法特别适用于复杂应用程序和中间件的部署,也非常适用于开发和演示环境快速搭建。本文示例可参考Gitee仓库各种compose文件夹中README.md文档说明
二.安装Docker-Compose
安装Docker-Compose之前,需要先安装Docker,参考之前 juejin.cn/post/726938... 文章中的Docker安装指南
1.前往 github.com/docker/comp... 选择DockerCompose对应的版本下载linux二进制文件 2.把文件重命名为 docker-compose 放入/usr/local/bin/ 路径下并添加可执行权限
bash
chmod +x /usr/local/bin/docker-compose
3.查看docker-compose判断是否安装成功
bash
docker-compose version
示例-安装NACOS和MYSQL
1.创建名为docker-compose-config.yml配置文件
yml
services:
# Mysql
serverMysql:
restart: always
image: mysql:8.0.23
container_name: server-mysql
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: mysql@Mypass.
MYSQL_DATABASE: server_nacos_db
MYSQL_USER: nacos
MYSQL_PASSWORD: nacos@Mypass.
TZ: Asia/Shanghai
volumes:
- /opt/dockerData/config/mysql/config/my.cnf:/etc/mysql/my.cnf
- /opt/dockerData/config/mysql/data:/var/lib/mysql
- /opt/dockerData/config/mysql/log:/logs
- /opt/dockerData/config/mysql/init:/docker-entrypoint-initdb.d
- /opt/dockerData/configPlus/mysql/mysql-files:/var/lib/mysql-files
logging:
driver: 'json-file'
options:
max-size: '5g'
command:
--lower_case_table_names=1
--max_connections=1000
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--default-authentication-plugin=mysql_native_password
# 解决docker容器中的mysql安全认证问题
security_opt:
- seccomp:unconfined
ports:
- 3306:3306
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 10s
timeout: 10s
retries: 10
networks:
- configNet
# Nacos
serverNacos:
restart: always
image: nacos/nacos-server:2.0.1
container_name: server-nacos
privileged: true
environment:
TZ: Asia/Shanghai
MODE: standalone
NACOS_APPLICATION_PORT: 8848
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: serverMysql
MYSQL_SERVICE_DB_NAME: server_nacos_db
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_USER: nacos
MYSQL_SERVICE_PASSWORD: nacos@Mypass.
volumes:
- /opt/dockerData/config/nacos/logs:/home/nacos/logs
logging:
driver: 'json-file'
options:
max-size: '2g'
depends_on:
serverMysql:
condition: service_healthy
networks:
- configNet
ports:
- 8848:8848
- 9848:9848
- 9849:9849
networks:
configNet:
driver: bridge
enable_ipv6: false
3.同级目录执行命令即可,建议启动服务前先对文件夹进行授权
命令示例
# 增加权限
sudo chmod -R 777 /opt
# 在后台所有启动服务,指定编排文件
docker-compose -f docker-compose-config.yml up -d
# 停止服务
docker-compose -f docker-compose-config.yml stop
# 删除容器包括网络和卷
docker-compose -f docker-compose-config.yml down -v
示例-安装ELK
1.创建名为docker-compose-elk.yml配置文件
yml
services:
# ES
elasticsearch:
restart: always
image: elasticsearch:7.4.2
container_name: server-elasticsearch
privileged: true
user: root
environment:
# 以单一节点模式启动
- discovery.type=single-node
# 设置使用JVM内存大小
- ES_JAVA_OPTS=-Xms4096m -Xmx4096m
# ES密码(注意修改ES密码的情况下,Logstash和kibana映射文件里面的ES密码也要修改)
- ELASTIC_PASSWORD=es@Mypass.
volumes:
# 挂在ES文件
- /opt/dockerData/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /opt/dockerData/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /opt/dockerData/elk/elasticsearch/data:/usr/share/elasticsearch/data
networks:
- elkNet
ports:
- 9200:9200
- 9300:9300
# Logstash
logstash:
restart: always
image: logstash:7.4.2
container_name: server-logstash
privileged: true
user: root
volumes:
# 挂载logstash的配置文件
- /opt/dockerData/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
- /opt/dockerData/elk/logstash/config/pipeline.yml:/usr/share/logstash/config/pipeline.yml
- /opt/dockerData/elk/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
networks:
- elkNet
ports:
- 5044:5044
- 9600:9600
# Kibana
kibana:
restart: always
image: kibana:7.4.2
container_name: server-kibana
privileged: true
volumes:
# 挂载logstash的配置文件
- /opt/dockerData/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
depends_on:
- elasticsearch
networks:
- elkNet
ports:
- 5601:5601
networks:
elkNet:
driver: bridge
enable_ipv6: false
3.同级目录执行命令即可,建议启动服务前先对文件夹进行授权
命令示例
# 增加权限
sudo chmod -R 777 /opt
# 在后台所有启动服务,指定编排文件
docker-compose -f docker-compose-elk.yml up -d
# 停止服务
docker-compose -f docker-compose-elk.yml stop
# 删除容器包括网络和卷
docker-compose -f docker-compose-elk.yml down -v
GITEE仓库地址
谢谢大家阅读,如果喜欢,请收藏点赞,多给些star,文章不足之处,也请给出宝贵意见.