Spring整合Docker
1 分钟 6974 字 |
制作镜像
- Dockerfile
创建打包文件
FROM openjdk:8-jdk-alpine
RUN mkdir -p /app/simulation
WORKDIR /app/simulation
COPY ./simulation-1.0.0-SNAPSHOT.jar .
COPY ./startServer.sh .
ENTRYPOINT ["sh", "/app/simulation/startServer.sh"]
- startServer.sh
启动脚本
#!/bin/bash
cd /app/simulation && nohup java -jar -Xms256m -Xmx256m simulation-1.0.0-SNAPSHOT.jar .jar > log.out &
cd /app/simulation && tail -f log.out
- settings.xml
在maven目录(.m2)中创建settings.xml
<settings>
<servers>
<!-- harbor配置 -->
<server>
<id>my-hub</id>
<username>admin</username>
<password>dec2023</password>
<configuration>
<email>1067614540@qq.com</email>
</configuration>
</server>
</servers>
</settings>
- pom.xml
spring插件配置
<properties>
<!--Docker镜像名-->
<docker.artifactId>simulation</docker.artifactId>
<docker.imageTag>latest</docker.imageTag>
<!--Dockerfile所在的目录-->
<docker.directory>src/main/docker</docker.directory>
<!--Docker插件打包jar路径-->
<project.build.directory>src/main/docker</project.build.directory>
<project.build.finalName>simulation-1.0.0-SNAPSHOT</project.build.finalName>
<!-- docker私服(Harbor)地址 -->
<docker.repostory>124.70.97.36:8010</docker.repostory>
<!--项目名,需要和Harbor中的项目名称保持一致 -->
<docker.registry.name>test</docker.registry.name>
</properties>
<build>
<plugins>
<plugin><!--制作docker镜像的maven插件-->
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<serverId>my-hub</serverId>
<registryUrl>http://${docker.repostory}</registryUrl>
<imageName>${docker.repostory}/${docker.registry.name}/${docker.artifactId}:${docker.imageTag}</imageName>
<dockerDirectory>${docker.directory}</dockerDirectory><!--Dockerfile所在的目录-->
<resources>
<resource><!--打包后jar所在的位置-->
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
- 打包
- 推送
在上一步中选择docker:push
ARM架构
- Dockerfile移动到根目录
FROM --platform=linux/amd64 openjdk:8-jdk-alpine
RUN mkdir -p /app/simulation
WORKDIR /app/simulation
EXPOSE 1234
COPY src/main/docker/startServer.sh .
ARG JAR_FILE
COPY target/${JAR_FILE} .
VOLUME /root/upload/model
VOLUME /app/simulation/logs
ENTRYPOINT ["sh", "/app/simulation/startServer.sh"]
- pom
<plugin><!--制作docker镜像的maven插件-->
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<dependencies>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-unixsocket</artifactId>
<version>0.38.20</version>
</dependency>
<dependency>
<groupId>com.spotify</groupId>
<artifactId>docker-client</artifactId>
<classifier>shaded</classifier>
<version>8.14.5</version>
</dependency>
</dependencies>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<!-- <phase>package</phase>-->
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration> <repository>${docker.repostory}/${docker.registry.name}/${docker.artifactId}</repository>
<tag>${docker.imageTag}</tag>
<buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</plugin>
参考
- https://juejin.cn/post/7043807084999081992
- https://juejin.cn/post/7107617112255889422
- https://www.cnblogs.com/Naylor/p/13803532.html
~ ~ The End ~ ~
分类标签:技术,none
文章标题:Spring整合Docker
文章链接:http://120.46.217.131:82/archives/68/
最后编辑:2024 年 8 月 14 日 10:40 By Yang
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
文章标题:Spring整合Docker
文章链接:http://120.46.217.131:82/archives/68/
最后编辑:2024 年 8 月 14 日 10:40 By Yang
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)