1. 程式人生 > >Jenkins編譯docker映象部署到阿里雲映象伺服器

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