文章目录
- 前言
- 一、整体步骤简介
- 二、开始实战
-
- 1.准备好微服务
- 2.将各个微服务打包为镜像
-
- 第一种
- 第二种
- 3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可
- 总结
前言
docker容器化部署微服务:
将微服务容器化部署到 Docker 容器中是一个常见的做法,可以提高应用的可移植性和可扩展性;因为镜像可以直接下载,并转移到其他服务,中间件等,用docker-compose容器化编排,也可以快速部署一套服务。
如何容器化部署微服务
一、整体步骤简介
- 准备好微服务
- 将各个微服务打包为镜像
- 将各个打包好的镜像,通过docker-compose容器编排,运行即可
二、开始实战
1.准备好微服务
准备好微服务,确保可以成功打为jar包,可以正常部署运行即可。
我这里准备好的微服务为maven构建的,执行
mavn clean package
跳过test;每个微服务都可以打包出target文件夹,其中包括jar包;
记住这个Dockerfile 和 target 文件夹的位置关系
2.将各个微服务打包为镜像
一般采用两种方式:
第一种
一种是通过将每个服务的jar 和 每个服务的Dockerfile 上传到服务器,然后分别运行命令
docker build -t knowledge:v1 .
这里的 knowledge:v1 , knowledge:为镜像名称 ,v1:为镜像版本
注意最后有一个 .
可以参考 docker镜像方式运行springboot项目jar
第二种
通过在idea中配置好Dockerfile 以及 docker,然后打包镜像到服务器
- 编写Dockerfile
FROM openjdk:8-jdk-alpine
RUN apk add --no-cache bash ttf-dejavu fontconfig
COPY target/knowledge.jar.jar knowledge.jar
EXPOSE 8888
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
ENTRYPOINT ["java","-jar","knowledge.jar","$JAVA_OPTS"]
采用 openjdk:8-jdk-alpine 这个jdk版本
如果服务用到字体等,需要安装此插件
将打包的jar 发布到容器中
该容器对外暴漏的端口
设置启动环境参数
执行启动命令
- idea 安装docker 插件,连接docker
ssh连接 身份验证信息 记得选择第二项 密钥对 , 不要选择用户名密码
- 配置好后,可以在此视图看到连接的服务器
- 配置Dockefile运行参数
- 详细配置展示,每个微服务的每个Dockerfile都配置一遍
我这里有四个微服务,所以配置了四个
- 一键打包所有服务为镜像并发布到服务器
3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可
- 编写docker-compose.yml
# version: '2.3'
services:
# 中间件
mysql:
image: mysql:5.7.37
container_name: mysql5.7.37
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./docker/mysql-data:/var/lib/mysql
- ./docker/