目录
一、环境准备
1、工具准备
2、虚拟机环境
3、Docker 环境
二、项目准备
1、配置各个模块(微服务)的 Dockerfile
2、配置 docker-compose.yml 文件
3、Maven 打包
4、文件整合并传输
三、微服务部署
1、部署至 Docker
2、访问微服务
四、问题汇总
1、加载、启动很慢
2、没有给 CentOS 安装 jdk8
(1)使用 CentOS7 作为项目部署的服务器操作系统
由于访问微服务需要操作系统有端口开放,因此可以采取两种措施:
- 第一种:关闭防火墙;
- 第二种:微服务用到哪些端口,就打开哪些端口;
参考如下内容:https://www.cnblogs.com/ketoli/p/15111625.html
在这里我选择用到端口再进行开放,需要注意的是:每次更新完防火墙配置后,都需要重启防火墙和 Docker。
如上图所示:开启了 10086、8091、8081、8080、8848 端口。
(2)安装 JDK8
yum instll -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
yum install java-1.8.0-openjdk* -y
(1)安装 Docker 并配置镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i '[email protected]@mirrors.tuna.tsinghua.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
(2)安装 docker-ce
yum install -y docker-ce
(3)配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
(4)安装 Docker-Compose
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
(6)设置 Docker 开机自动启动
systemctl enable docker
下面将要部署一个微服务项目,其中包括 3 个微服务:
(1)编写 Dockerfile
# 指定基础镜像
FROM java:8-alpine
# 将 jar 包复制到容器中
COPY ./app.jar /app.jar
# 暴露端口
EXPOSE 10086
# 入口,java项目的启动命令
ENTRYPOINT java -jar /app.jar
Dockerfile 文件构建镜像,那么 docker-compose 文件就是根据镜像构建容器。
需要关注的是:
version: "3.2"
services:
nacos: # 需要将 java 项目中的 application 配置文件中,需要用到这些中间件的地址 localhost,都改为这个服务名 nacos(数据库则是 mysql)
image: nacos/nacos-server
environment:
MODE: standalone
ports:
- "8848:8848"
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
user-service: # 与 nacos 注册中心的 name 一致
build: ./user-module # 寻找当前 yml 所在目录的文件夹,其中包含 dockerfile
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
order-service:
build: ./order-module
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
gateway:
build: ./gateway
ports:
- "10086:10086"
restart: always
logging:
driver: "json-file"
options:
max-size: "100m"
(1)项目结构
(2)pom 文件
pom 文件的编写需要注意 2 点:
(3)修改 application/bootstrap 配置文件
(4)打包
(1)将 jar 包放入指定文件夹
(2)传输至 Linux
(1)cd 至项目在 Linux 中的位置
(2)使用 docker-compose
(3)可能会遇到的问题
如果我们使用 docker compose up 一次性将所有容器创建并启动,这就会有一个问题:
因此我们有两种选择:
(1)访问 nacos
(2)向 http://ip:port/xxx 发送请求
我遇到的问题是:
- docker compose up 之后,要过好几分钟才能访问 nacos 主页。并且需要等到可以访问 nacos 主页之后,再 restart 其他服务,才能将服务注册到 nacos。
(1)解决方法
考虑到微服务其实会占用很大的内存,所以我将虚拟机的内存增大到 4G 了。
然后部署,服务加载的速度就变得很快了。
既然要运行 java 项目,那么一个 jdk 也是必不可少的。(我个人就是忘了装 jdk,debug 了数小时没有部署成功)
前文准备虚拟机环境中已有介绍。