Jenkins編譯docker映象部署到阿里雲映象伺服器
阿新 • • 發佈:2018-12-20
編輯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!================'