Docker利用docker-compose 实现项目的一键部署(支持多项目bu’shu部署)
安装 docker
- 在安装 Docker以及 docker-compose
- 可以进行在线安装和离线安装两种方式
- 安装docker-compose[版本号:2.15.0]
- 离线安装
# cd /data/software
//根据自己下载的文件名 重命名为 docker-compose
# mv docker-compose-linux-aarch64 docker-compose 或者 mv docker-compose-linux-x86_64 docker-compose
# cp docker-compose /usr/local/bin
# chmod a+x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker-compose --version #查看 docker-compose 的版本号
- 在线安装
# curl -L https://get.daocloud.io/docker/compose/releases/download/v2.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
# chmod a+x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker-compose --version
部署项目
- 准备工作
- 准备文件目录
# mkdir -p /data/docker/webapp
docker-webapp目录中存放 docker-compose.yml,nginx,mysql 等文件
特别注意:文件夹里面有一个.env隐藏文件,一定要保证创建。
# mkdir -p /data/webapp/www
该目录存放前端静态文件.
- 确认要部署的项目版本
(1)修改1中的.env文件,来设置后端模块版本
demo1_version=1.0.0
demo2_version=1.0.0
- 部署环境配置
文件都在docker-webapp目录下
- docker-compose 文件配置
version: '3'
services:
#nginx
nginx:
image: nginx:1.23
container_name: nginx
restart: always
privileged: true
ports:
- "80:80"
- "443:443"
volumes:
- /data/module/nginx/logs:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
- ./nginx/proxy_params:/etc/nginx/proxy_params
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/cert:/etc/nginx/cert
- /data/webapp:/dockerDir
networks:
- net_webapp # 项目之前通信的网桥
#mysql
mysql:
image: mysql:8
container_name: mysql
restart: always
#ports:
# - "3306:3306" #暴露给宿主机使用的端口,服务连接mysql使用mysql:3306
volumes:
- /data/module/mysql/logs:/var/log/mysql
- /data/module/mysql/data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/my.cnf #自定义my.cnf,主要修改字符集编码为utf8mb4
- ./mysql/sqls:/docker-entrypoint-initdb.d #初始化sql文件放这个目录下,自动执行
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: Platomix@mysql123
networks:
- net_webapp
#clickhouse
clickhouse:
image: docker.platomix.net:10000/module/clickhouse-server:23.3.5
container_name: ckserver
#ports:
# - "8123:8123"
ulimits:
nofile:
soft: 262144
hard: 262144
volumes:
- /data/module/clickhouse/data:/var/lib/clickhouse
- /data/module/clickhouse/logs:/var/log/clickhouse-server
- ./clickhouse/config.xml:/etc/clickhouse-server/config.xml
- ./clickhouse/users.xml:/etc/clickhouse-server/users.xml
#redis
redis:
image: redis:5.0
container_name: redis
restart: always
#ports:
# - "6379:6379"
command: redis-server /usr/local/etc/redis/redis.conf #使用配置文件方式
volumes:
- /data/module/redis:/data
- /data/module/redis/logs:/logs
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
networks:
- net_webapp
#demo1模块
project-demo1:
image: images名称:${demo1_version}
container_name: demo1
environment:
JAVA_OPTS: "-Xms512m -Xmx1g"
SPRINGBOOT_PARAMS: "--server.port=6969 --spring.profiles.active=docker --log.path=/dockerDir/logs/xxljob"
volumes:
- /data/webapp:/dockerDir
#ports:
# - "6969:6969"
networks:
- net_webapp
#demo2模块
project-demo2:
image: images名称:${demo2_version}
container_name: demo2
environment:
JAVA_OPTS: "-Xms2g -Xmx2g -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:MaxDirectMemorySize=256m -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=75 -XX:HeapDumpPath=/dockerDir/logs/bi/jvm.hprof -Xloggc:/dockerDir/logs/bi/gc.log"
SPRINGBOOT_PARAMS: "--server.port=6060 --spring.profiles.active=docker --blade.domain=http://localhost"
volumes:
- /data/webapp:/dockerDir
#ports:
# - "6060:6060"
networks:
- net_webapp
networks:
net_webapp:
external: true
- docker 镜像下载
- 启动项目
项目启动必须按照顺序:1、创建网桥
#docker network create net_webapp
#docker network ls #查看网桥
2、启动mysql/redis
# cd /data/docker/webapp
# docker-compose up -d mysql redis
3、启动BI项目模块
# cd /data/docker/webapp
# docker-compose up -d project-demo1 project-demo2
4、最后启动nginx
# cd /data/docker/webapp
# docker-compose up -d nginx
到此整个项目就部署完毕…