Jenkins编译docker镜像部署到阿里云镜像服务器

编辑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!================'

猜你喜欢

转载自blog.csdn.net/chenxing109/article/details/84769504