一: 新建一個SpringBoot-web 項目
-
略
-
在pom.xml 引入Docker maven plugin
-
<build> <plugins> ... <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.10</version> <configuration> <tag>${project.build.finalName}-demo</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> <!-- Docker maven plugin --> </plugins> </build>
二: 安裝Docker java 8 鏡像
docker pull java:8
三: 添加Dockerfile
在pom.xml 平級目錄新建Dockerfile文件
FROM java:latest
VOLUME /tmp
ARG JAR_FILE
ADD target/${JAR_FILE} /app.jar
#暴露端口
EXPOSE 8088
ENV JVM_OPTS="-Xmx1344M -Xms1344M -Xmn448M -Xloggc:/data/log/demo-jvm.log -XX:+UseConcMarkSweepGC -Dfile.encoding=utf-8 -Duser.timezone=Asia/Shanghai -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSClassUnloadingEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogramAfterFullGC -XX:+PrintCommandLineFlags -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -XX:HeapDumpPath=/tmp/demo-heapdump.hprof -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M"
ENTRYPOINT java ${JVM_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
四:使用 DockerFile 構建鏡像
執行命令:
mvn clean package dockerfile:build
查看鏡像結果:
docker images
五: 運行docker鏡像
執行命令:
docker run -d -p 8088:8080 --name docker-demo admol/docker-demo:docker-demo
六:查看運行結果
- 瀏覽器驗證
- 訪問
http://localhost:8088/hello
- 訪問
- docker 驗證
- 運行
docker ps
命令查看運行中的容器
- 運行
- docker 容器日志驗證
docker logs containerid -f
七:進入容器
windows 環境下:
winpty docker exec -it containerid sh
查看進程ID
jps
跟蹤GC執行情況
jstat -gccause pid 3s
退出容器命令
exit
遇到的問題
問題1:打包出現錯誤:
[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups...
解決辦法: 修改 maven 的配置文件 settings.xml
<pluginGroups>
<pluginGroup>com.spotify</pluginGroup>
</pluginGroups>
問題2:打包出現Connection refused 錯誤:
[ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.4.10:build (default-cli) on project docker-demo: Could not build image: java.util.concurrent.ExecutionException: com
.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: com.spotify.docker.client.shaded.org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0
.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect -> [Help 1]
解決辦法: 右鍵運行中的docker,Settings, 勾選 Expose daemon on tcp://localhost:2375 without TLS
; 然后重啟docker