随着云的普及,Devops开发方式越来越流行,开发运维一体化让开发感到便捷很多。从单人开发到多人协同开发,从开发交付测试人到交付用户,这中间思路的转变也是随着技术不断革新而转变。
最初在公司尝试开发流程,没有技术的支持,全靠人治效果可想而知;后来尝试持续交付,开发流程配合工具让开发尝到甜头,效率也提升不少,但是在一个toB的软件公司,运维的压力其实比较大(主要是同一个软件产品,最终部署时软件功能、硬件环境、部署方式都可能不一样),一直想着怎么把运维的压力减少,或者是通过新技术缓解这样的压力。当初想到Docker,但是没有进行实施计划最后不了了之。
Spring Cloud +Docker+k8s 一套不错的组合。
安装Docker私服仓库registry
配置docker
#编辑docker.service文件
vim /lib/systemd/system/docker.service
#内容修改
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
开启端口2375不安全,开启证书认证2376 端口
Eclipse 安装Docker Tools插件
http://download.eclipse.org/linuxtools/updates-docker-nightly/
本地安装Docker
下载地址: https://www.docker.com/get-docker
本地必须安装Docker环境,否则插件无法使用。
Docker 插件配置配置
dockerfile-maven-plugin 此插件必须安装Docker环境
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<bigdata.version>0.0.1-SNAPSHOT</bigdata.version>
<spring-cloud.version>2.1.0.RELEASE</spring-cloud.version>
<docker.repostory>172.18.11.126:5000</docker.repostory>
</properties>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.repostory}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
Dockerfile 文件配置
此文件与pom.xml文件同目录
FROM java:8
ARG JAR_FILE
ADD target/${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
配置本地环境变量
mvn install 构建后,服务端Docker出现镜像
备注:安装过程中有一个误区
- Docker desktop 安装问题导致构建失败
- registry提供私服仓库,想当然认为镜像也是通过该仓库路径上传,而事实镜像是通过Docker与Docker TCP端口2375之间上传,registry只是提供pull服务。
- 因为插件配置中少<phase>install</phase>,registry私服中未显示发布镜像。
参考:
Eclipse用docker Maven插件构建镜像发布到远程服务器
Eclipse下spingClound和Docker的使用【windowns系统】