概述
一. 前期准备工作
1.1 服务器配置docker-compose环境
1.1.1 安装 Docker Compose
Compose 支持 Linux、macOS、Windows 10 三大平台。在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
1.1.2 验证安装是否成功
docker-compose version
# 输出如下
docker-compose version 1.24.0, build 0aa59064
docker-py version: 3.7.2
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018
1.2 拉取镜像: store/oracle/serverjre:8
1.2.1 先到docker搜索jre
1.2.2 注册
1.2.3 填写基础信息注册
1.2.4 拉取镜像
docker pull store/oracle/serverjre:8
二. 编写Docker相关文件
2.1 确定工程依赖关系及开放端口
1.2.1 工程结构
1.2.2 工程间依赖关系
工程名 | 依赖 | 开放端口 | 备注 |
---|---|---|---|
springcloud-ms-eureka-7961 | 不依赖服务 | 7961:7961 | |
springcloud-ms-configserver-7070 | 不依赖服务 | 7070 | 需要拷贝 wait-for-it.sh |
springcloud-ms-consumer-8080 | 依赖 eureka | 8080 | |
springcloud-ms-provider-6001 | 依赖 eureak, mysql | 6001 | 初始化连接池,所以要等mysql彻底启动才能正常启动;provider的配置文件在gitee,需要连接到配置服务器,所以必须要等配置服务器启动。但是 ./wait-for-it.sh server-config:7070 mysq:3306 不能等两个服务,所以我们配置服务器等mysql启动,然后provider等配置服务器。 |
springcloud-ms-provider-6002 | 依赖 eureak, mysql | 6002 | 初始化连接池,所以要等mysql彻底启动才能正常启动;provider的配置文件在gitee,需要连接到配置服务器,所以必须要等配置服务器启动。 |
springcloud-ms-zuul-9090 | 无依赖eureka | 9090:9090 |
2.2 在子工程更目录下编写Dockerfile
2.2.1 示例
FROM store/oracle/serverjre:8
MAINTAINER hello@163.com
RUN mkdir -p /datas
WORKDIR /datas
COPY springcloud-ms-provider-6001-1.0-SNAPSHOT.jar ./
# 将脚本拷贝进去,等依赖的服务启动后才启动
COPY wait-for-it.sh ./
EXPOSE 6001
2.3在父工程下编写docker-compose.yml
version: '3.7'
services:
mysql:
image: mysql:5.7.27
ports:
- 3307:3306
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
# mysql的数据文件的位置
- /springcloud-ms/mysql/datas/:/var/lib/mysql
# mysql的配置文件
- /springcloud-ms/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
eureka1:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-eureka-7961
dockerfile: Dockerfile
ports:
- 7961:7961
command: ["java", "-jar", "springcloud-ms-eureka-7961-1.0-SNAPSHOT.jar"]
# eureka2:
# build:
# # Dokcerfile文件所在的位置
# context: springcloud-ms-eureka-7962
# dockerfile: Dockerfile
# ports:
# - 7962:7962
# command: ["java", "-jar", "springcloud-ms-eureka-7962-1.0-SNAPSHOT.jar"]
ms-provider1:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-provider-6001
dockerfile: Dockerfile
depends_on:
- mysql
- eureka1
- config-server
# 等mysql服务启动,最长等6000s, 然后再启动 jar
command: ["./wait-for-it.sh", "-t", "6000", "config-server:7070", "--", "java", "-jar", "springcloud-ms-provider-6001-1.0-SNAPSHOT.jar"]
ms-provider2:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-provider-6002
dockerfile: Dockerfile
deploy:
# 表示构建两个集群集群
replicas: 2
depends_on:
- mysql
- eureka1
- config-server
# 等mysql服务启动,最长等6000s, 然后再启动 jar
command: ["./wait-for-it.sh", "-t", "6000", "config-server:7070", "--", "java", "-jar", "springcloud-ms-provider-6002-1.0-SNAPSHOT.jar"]
config-server:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-configserver-7070
dockerfile: Dockerfile
command: ["./wait-for-it.sh", "-t", "6000", "mysql:3306", "--", "java", "-jar", "springcloud-ms-configserver-7070-1.0-SNAPSHOT.jar"]
zuul:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-zuul-9090
dockerfile: Dockerfile
depends_on:
- eureka1
ports:
- 9090:9090
command: ["java", "-jar", "springcloud-ms-zuul-9090-1.0-SNAPSHOT.jar"]
consumer:
build:
# Dokcerfile文件所在的位置
context: springcloud-ms-consumer-8080
dockerfile: Dockerfile
command: ["java", "-jar", "springcloud-ms-consumer-8080-1.0-SNAPSHOT.jar"]
depends_on:
- eureka1
三 . 部署就绪
3.1 打包各子工程
3.1.1 打包方法
3.1.2 依赖了公共模块的工程打jar包
注意 : 如果不先打包commons,可能会出现找不到依赖问题
步骤一: 先打spring-commons包
步骤二 : 再去打其他包
四 . 整理工程打包上存服务器
4.1工程文件结构
文件内容
五 . 打开终端执行运行命令
5.1 运行工程
docker-compose up
5.2 可能出现.sh
文件没有权限
解决方法: 直接给工程下所有文件赋权
# 进入工程目录
cd /springcloud-ms
# 给当前文件夹下所有文件授权
chmod -R 777 ./