Spring Cloud 微服务入门教程(十二):Spring Cloud Docker 容器化部署

上一节我们讲了服务跟踪和链路监控以后,基本微服务框架的大体已经快要结束了,在伴随微服务中的部署肯定离不开Docker,那么我们如何构建一个Docker的镜像呢?本节我们就讲一下把代码打包成镜像文件,并上传到镜像仓库中。

Dockerfile的介绍

由于主题是将微服务,Docker相关的内容不深入讲解,如果对Docker一无所知,还需要先简单了解下Docker,咱们只聊你够用的知识就可以了。在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

我们给每个模块下面都新建一个Dockerfile文件,内容参考如下:

#基于OpenJDK8镜像
FROM openjdk:8
#维护者和联系方式
MAINTAINER RenFei i@renfei.net
#将Maven打包的Jar添加到镜像中
ADD target/*.jar app.jar
#开启 8761端口
EXPOSE 8761
#入口点,镜像从这里开始执行
ENTRYPOINT ["java","-jar","app.jar"]

然后运行 docker build -t <标签名> 构建镜像,再运行 doucker push <仓库地址> 将镜像推送到远程镜像仓库中。每次都得手动输入命令太繁琐,我们可以写一个shell脚本来完成一系列的动作,我们再新建一个build.sh文件。

build.sh脚本

为了简便我们的操作我们新建一个脚本,Linux和Mac的同学是shell脚本就是build.sh,Windows的同学需要新建批处理文件build.bat,并且命令有所不同,我这里演示的使用Mac环境,代码如下:

#!/usr/bin/env bash
mvn clean package -Dmaven.test.skip=true -U
docker build -t XXXXXX
doucker push XXXXXX

执行这个脚本就可以帮我们使用Maven打包并且构建镜像和推送镜像,一气呵成

运行镜像

镜像本地build构建完成以后,就可以再本地运行了,运行的命令是 docker run -p <本机端口>:<容器里端口> -d <镜像名称>,例如:docker run -p 8761:8761 -d renfei/eureka 就可以启动注册中心模块了。

如果提示不可执行,还需要一个命令 chmod +x build.sh 给文件可执行的权限。

关于镜像仓库

镜像仓库的提供方有很多,可以自己建私有仓库,也可以使用官方的DockerHub,网易云和阿里云也提供仓库服务,一般自己练习的话国内使用网易云的人比较多。

分享此页面

Comments