如果单纯得做微服务开发,虽然也可以通过传统得脚本,或者Jinkens工具以脚本的方式进行CI/CD发布,但是相对于Docker镜像来讲,还不是最方便的,所以如果要做CI/CD,最好还是使用Docker镜像来发布。另外对于产品管理,版本控制,新旧版本同时运营,Docker镜像的优势更加明显。
对于开发人员来讲,只用学下Docker的基本使用知识,即可快速的构建Docker镜像,同时利用阿里云的镜像仓库,将微服务代码构建为Docker镜像,将变得极为简单:我们只用一个构建脚本即可完成。
使用标准得Maven构建一个Java微服务项目:
并将该项目放入标准Git库,在此我们可以使用阿里云的Git公共库,目前是免费的,非常方便。
可以看到,我们只用增加一个Dockerfile文件即可实现微服务构建为Docker镜像,不需要自己再用传统的Docker命令去Docker环境内编辑,打包镜像,推送到镜像库。也不需要使用SpringCloud的组件通过Pom来构建,这2钟传统的方式都有上手难度,也很容易出错。对于开发人员来讲,业务解耦和简单易用才是王道。
- 构建脚本一 Dockerfile_Jenkins
主要是针对使用PipeLine工具的构建:
FROM openjdk:alpine //使用OpenJDK的镜像母版
RUN mkdir -p /opt/server //创建工作目录
RUN mkdir -p /opt/logs //创建日志目录
ENV TZ=Asia/Shanghai //加入时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /opt/server //设定工作目录
ADD ./target /opt/server/ //将微服务Jar包添加到工作目录
RUN ls -ld *
RUN mvn clean install -Dmaven.test.skip #由外部Jenkins进行构建
CMD ["java","-jar","config-0.0.1-SNAPSHOT.jar"] //启动命令
2.构建脚本二 Dockerfile_Maven
主要是针对使用Docker构建环境进行构建:
FROM maven:3.5.4-jdk-8 //使用Maven的镜像母版
RUN mkdir -p /opt/server //创建工作目录
RUN mkdir -p /opt/logs //创建日志目录
ENV TZ=Asia/Shanghai //加入时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /opt/server //设定工作目录
ADD . /opt/server //将微服务Jar包添加到工作目录
RUN ls -ld *
RUN mvn package -Dmaven.test.skip #由Maven进行构建
CMD ["java","-jar","target/config-0.0.1-SNAPSHOT.jar"] //启动命令
这2个脚本都可以用,如果你使用了阿里云的镜像库,建议使用第二个脚本, 如果使用了自己的Jinkens服务器或第三方Jinkens服务器,建议使用第一个脚本。当然也可以自己增减内容。