使用docker compose一键启动多个应用
使用docker compose一键启动多个应用
环境说明
linux系统版本:lsb_release -a
docker 版本: docker -v
不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。
.1.安装教程,参考官网安装指南。
https://dockerdocs.cn/compose/install/index.html
版本说明。
安装操作说明。
安装命令如下,
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
安装失败。因为该文件是保存在github上面的,需要连接外网,因此只能换种方式安装。
执行命令
yum -y install epel-release --allowerasing
yum -y install python3-pip
然后安装指定版本
pip3 install docker-compose==1.29.1
执行时报错如下,
大致错误信息的意思是需要升级pip3
升级命令如下
sudo python3 -m pip install --upgrade pip
然后命令又变为pip --version
再次执行
pip install docker-compose==1.29.1
安装成功
查看版本
docker-compose -v
.2.准备docker-compose.yml配置文件。
上传到服务器中指定的位置。最终的配置文件会放在最后面。
.3.启动docker compose服务.
docker compose up -d 注意事项:需要在docker-compose.yarm同一个目录下执行该命令!!
第一次报错,
第十三行配置错误,注销后重新执行。
再次启动服务,有一个服务启动失败,其他服务启动成功。
初步来看是jar包的位置错误,没有正确挂载导致的。
修改Java服务相关配置后
volumes:
- "/opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar"
- "/opt/u01/exam/java:/project"
command: [
'java',
'-jar',
'WebBackend.jar'
]
再次启动,执行同样的命令,之前的服务不受影响,不会重新启动。修改后,Java服务启动然后立马退出。查看日志,错误信息如下,
再次修改配置文件,jar文件需要加上容器内的绝对路径。
command: [
'java',
'-jar',
'/project/WebBackend.jar'
]
再次执行命令服务启动成功。
.4.测试服务是否正常。
nginx服务正常。
mysql数据库连接正常。
redis服务正常。
后台服务异常,无法打开。
查看日志信息如下,
最后排查到问题时因为自己在配置时,Java服务的端口设置错误,修改后重新启动服务即可。
最终的docker-compose.yarm配置文件信息如下,
version: '3.8'
networks:
bigstuff:
services:
mysql:
image: mysql:5.7
container_name: mysql
ports:
- "自己设置端口:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 自己设置密码
#MYSQL_ROOT_HOST: %
volumes:
- "/opt/u01/exam/mysql/my.cnf:/etc/mysql/my.cnf"
- "/opt/u01/exam/mysql/logs:/var/log/mysql"
- "/opt/u01/exam/mysql/data:/var/lib/mysql"
networks:
- bigstuff
redis:
image: redis:6.0.8
container_name: redis
ports:
- "自己设置端口:6379"
environment:
TZ: Asia/Shanghai
volumes:
- "/opt/u01/exam/redis/redis.conf:/usr/local/etc/redis/redis.conf"
- "/opt/u01/exam/redis/data:/data"
- "/opt/u01/exam/redis/log:/logs"
#配置文件启动
command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes
networks:
- bigstuff
webbackend:
image: openjdk:8
container_name: webbackend
ports:
- "自己设置端口:8080"
volumes:
- "/opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar"
- "/opt/u01/exam/java:/project"
command: [
'java',
'-jar',
'/project/WebBackend.jar'
]
depends_on:
- mysql
- redis
networks:
- bigstuff
nginx:
image: nginx:1.24.0
container_name: nginx
ports:
- "443:443"
volumes:
- "/opt/u01/exam/nginx/html:/usr/share/nginx/html"
- "/opt/u01/exam/nginx/log:/var/log/nginx"
- "/opt/u01/exam/nginx/nginx.conf:/etc/nginx/nginx.conf"
- "/opt/u01/exam/nginx/yilangcode.xyz.key:/etc/nginx/yilangcode.xyz.key"
- "/opt/u01/exam/nginx/yilangcode.xyz.pem:/etc/nginx/yilangcode.xyz.pem"
networks:
- bigstuff
参考博文:
https://forums.centos.org/viewtopic.php?t=76065
https://blog.csdn.net/qq_39626154/article/details/82753412
https://www.cnblogs.com/qinlangsky/p/12653880.html
https://juejin.cn/post/7042663735156015140
https://cloud.tencent.com/developer/article/2317630
https://juejin.cn/post/7081931407630532616
https://developer.aliyun.com/article/1443415