Spring整合Docker

  1 分钟   6974 字    |    

制作镜像

  1. 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"]
  1. 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
  1. 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>
  1. 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>
  1. 打包

image-20230616164516568

  1. 推送

在上一步中选择docker:push

ARM架构

  1. 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"]
  1. 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>

参考

  1. https://juejin.cn/post/7043807084999081992
  2. https://juejin.cn/post/7107617112255889422
  3. https://www.cnblogs.com/Naylor/p/13803532.html
~  ~  The   End  ~  ~


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
文章二维码 分类标签:技术,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)

相关推荐

热门推荐

(*) 3 + 5 =
快来做第一个评论的人吧~