準(zhǔn)備環(huán)境:
docker
jdk
maven
配置docker:
- 為加快拉取鏡像速度后添,建議設(shè)置docker國內(nèi)鏡像源
# 創(chuàng)建或修改 /etc/docker/daemon.json 文件,修改為如下形式
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
# 重啟docker服務(wù)使配置生效
$ systemctl restart docker.service
- 國內(nèi)加速地址有:
Docker中國區(qū)官方鏡像:
https://registry.docker-cn.com網(wǎng)易:
http://hub-mirror.c.163.comustc:
https://docker.mirrors.ustc.edu.cn中國科技大學(xué):
https://docker.mirrors.ustc.edu.cn
新建并配置springboot項(xiàng)目:
1度液、新建springboot項(xiàng)目
2和措、pom.xml 增加docker依賴
<properties>
<docker.image.prefix>test-docker</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定該Main Class為全局的唯一入口 -->
<mainClass>com.server.cloud.zipkin.ZipkinServerApplication</mainClass>
<layout>JAR</layout>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依賴的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- docker plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- Dockerfile的地址 -->
<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>
3、新增 src/main/docker/Dockerfile 文件
# 指定基礎(chǔ)鏡像
FROM openjdk:8-jdk-alpine
# 維護(hù)者信息
MAINTAINER dbg
# 用于指定持久化目錄
VOLUME /tmp
# 將本地文件添加到容器中
ADD zipkin-server-1.0.0-SNAPSHOT.jar app.jar
# 指定于外界交互的端口
EXPOSE 9411
# 配置容器,使其可執(zhí)行化
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar
到這里 Spring Boot 項(xiàng)目添加 Docker 依賴就完成了
mvn打包及生成docker鏡像
1、進(jìn)入項(xiàng)目路徑下進(jìn)行打包測試:
#mvn打包
mvn package
#jar啟動(dòng)測試
java -jar target/zipkin-server-1.0.0-SNAPSHOT.jar
2练般、看到 Spring Boot 的啟動(dòng)日志后表明環(huán)境配置沒有問題,接下來我們使用 DockerFile 構(gòu)建鏡像:
# mvn打包并構(gòu)建docker鏡像
mvn clean package docker:build
- 第一次構(gòu)建需要拉取基礎(chǔ)鏡像可能會有點(diǎn)慢菱阵,耐心等待踢俄,當(dāng)你看到如下信息的時(shí)候說明構(gòu)建成功:
...
Step 1/5 : FROM openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2/5 : VOLUME /tmp
---> Using cache
---> d54a9bb20fac
Step 3/5 : ADD zipkin-server-1.0.0-SNAPSHOT.jar app.jar
---> 9353e6537a62
Step 4/5 : EXPOSE 9411
---> Running in 84034216b57b
Removing intermediate container 84034216b57b
---> 28272bf1375f
Step 5/5 : ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar
---> Running in 05813ce8ba7d
Removing intermediate container 05813ce8ba7d
---> 83dfc1c6753a
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 83dfc1c6753a
Successfully tagged test-docker/zipkin-server:latest
[INFO] Built test-docker/zipkin-server
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.412 s
[INFO] Finished at: 2019-08-08T16:51:52+08:00
[INFO] ------------------------------------------------------------------------
- 默認(rèn)構(gòu)建好的鏡像在本機(jī)docker中:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test-docker/zipkin-server latest 83dfc1c6753a 5 minutes ago 135MB
- 啟動(dòng)
docker run -d -e JAVA_OPTS='-server -Xms512m -Xmx512m' -p 9411:9411 --name zipkin -t test-docker/zipkin-server
- 查看啟動(dòng)的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
514931989a7b c2801d3d2b96 "/bin/sh -c 'exec ja…" About an hour ago Up 54 seconds 0.0.0.0:9411->9411/tcp zipkin
- 可以看到我們構(gòu)建的容器正在在運(yùn)行,訪問瀏覽器:http://localhost:9411
so 到這里 使用Docker部署SpringBoot項(xiàng)目 就成功了晴及!??