编辑Dockerfile文件
FROM frolvlad/alpine-oraclejdk8:slim
MAINTAINER Author<[email protected]>
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["/usr/bin/java", "-jar", "/app.jar"]
在pom.xml文件中添加docker-maven-plugin插件
<project>
......
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>${docker.repository}</repository>
<tag>${project.build.finalName}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>
增加环境变量DOCKER_HOST=tcp://ip:port,IP端口是开启远程控制的Docker地址
编译打包部署到Docker中
mvn clean package -DskipTest
在IDEA环境或者控制台Maven指令中都能很好的执行成功,然而在Jenkins 2.153 执行成功,日志没有异常信息,但是没有在Docker服务器生产镜像,不知是何原因。为了达到目的,只好编SHELL写脚本生产镜像。
Goals and options填写clean package -DskipTests,只打包jar文件,部署在后面的脚本完成。
完整的脚本如下:
IMAGE_NAME='registry.cn-shenzhen.aliyuncs.com/{命名空间}/{仓库名称}:web-demo-0.0.1-SNAPSHOT'
echo IMAGE_NAME=$IMAGE_NAME
echo '================当前docker版本=============='
echo `docker -v`
echo '================开始创建镜像================'
docker build -t $IMAGE_NAME .
echo '================开始推送镜像================'
docker login --username={阿里云Registry登录名} --password={阿里云Registry登录密码} registry.cn-shenzhen.aliyuncs.com
docker push $IMAGE_NAME
echo '====================OK!================'