jenkins將spring boot項目發佈到阿里雲鏡像中

一、spring boot項目

1.1 pom.xml配置

<artifactId>xxx-docker</artifactId>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
	<docker.image.prefix>registry-vpc.cn-qingdao.aliyuncs.com/xxx</docker.image.prefix>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-pool2</artifactId>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>

		<!-- Docker maven plugin -->
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>1.0.0</version>
			<configuration>
				<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
				<dockerDirectory>src/main/docker</dockerDirectory>
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>${project.build.finalName}.jar</include>
					</resource>
				</resources>
			</configuration>
		</plugin>
	</plugins>
</build>
  • imageName指定了鏡像的名字,本例爲 registry-vpc.cn-qingdao.aliyuncs.com/xxx/xxx-docker。
  • dockerDirectory指定 Dockerfile 的位置。
  • resources是指那些須要和 Dockerfile 放在一塊兒,在構建鏡像時使用的文件,通常應用 jar 包須要歸入。本例,只需一個 jar 文件。

1.2 配置

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD xxx-docker-1.0.0.RELEASE.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • VOLUME 指定了臨時文件目錄爲/tmp。其效果是在主機 /var/lib/docker 目錄下建立了一個臨時文件,並連接到容器的/tmp。改步驟是可選的,若是涉及到文件系統的應用就頗有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,由於 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp做爲工做目錄。
  • 項目的 jar 文件做爲 「app.jar」 添加到容器的。
  • ENTRYPOINT 執行項目 app.jar。爲了縮短 Tomcat 啓動時間,添加一個系統屬性指向 「/dev/urandom」 做爲 Entropy Source。

二、阿里雲鏡像申請

    請參考:http://www.javashuo.com/article/p-yeukvsgk-dx.htmljava

三、jenkins配置

    jenkins的服務器須要安裝dockerweb

3.1 build

3.2 Post Steps

四、啓動項目

    在須要啓動項目的服務器啓動,該服務器須要安裝docker。redis

4.1拉取鏡像

docker pull registry.cn-qingdao.aliyuncs.com/xxx/xxx-docker

4.2 啓動項目

docker run -d -p 8082:8082 registry-vpc.cn-qingdao.aliyuncs.com/xxx/xxx-docker
  •  -d:讓容器在後臺運行。
  •  -p 參數來設置不同的端口。

4.3 中止項目

docker stop registry-vpc.cn-qingdao.aliyuncs.com/xxx/xxx-docker

4.4 查看日誌

docker logs -f 7a38a1ad55c6
  •  docker logs [ID或者名字] 能夠查看容器內部的標準輸出。
  • -f:讓 docker logs 像使用 tail -f 同樣來輸出容器內部的標準輸出。   
相關文章
相關標籤/搜索