1. 程式人生 > >Docker 釋出springboot 專案

Docker 釋出springboot 專案

1)Spring Boot 專案新增 Docker 支援

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</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>
		<!-- Docker maven plugin -->
	</plugins>
</build>

2) 新增 jdk , maven 環境變數。

3)安裝 Docker 環境

      a)安裝  

yum install docker

     b)安裝完成後,使用下面的命令來啟動 docker 服務,並將其設定為開機啟動

service docker start
chkconfig docker on

#LCTT 譯註:此處採用了舊式的 sysv 語法,如採用CentOS 7中支援的新式 systemd 語法,如下:
systemctl  start docker.service
systemctl  enable docker.service

    c)使用Docker 中國加速器

vi  /etc/docker/daemon.json

#新增後:
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true
}

   d)重新啟動docker

systemctl restart docker

輸入docker version 返回版本資訊則安裝正常。

4) 使用 Docker 部署 Spring Boot 專案

將專案 spring-boot-docker 拷貝伺服器中,進入專案路徑下進行打包測試。

#打包
mvn package
#啟動
java -jar target/demo-spring-boot-1.0.jar

建立 Dockerfile 檔案,並將*.jar 檔案放在同一個資料夾下(最好單獨放一起)。例如

# 基礎映象使用Java
FROM java:8
# 作者
MAINTAINER lr
# VOLUME 指定了臨時檔案目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,並連結到容器的/tmp
VOLUME /tmp
# 將jar包新增到容器中並更名為app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# 執行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 指定容器需要對映到主機的埠
EXPOSE 8080

執行映象構建命令

**docker image build -t demo-springboot . // 映象名隨意,注意最後有一個點**

檢視docker 構建的映象中是否存在demo-springboot

docker images

執行映象

docker run -p8080:8089 -d demo-springboot

其中: 1) -p外部埠號:內部埠號

2) -d 後臺執行