SpringBoot项目集成docker,实现打包镜像,推送镜像功能

 pom文件加入docker-maven-plugin插件

 

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <executions>
       <execution>
          <id>build-image</id>
          <phase>package</phase>
          <goals>
             <goal>build</goal>
             <goal>push</goal>
          </goals>
       </execution>
    </executions>
    <configuration>
       <!-- Docker 推送镜像仓库地址 -->
       <pushRegistry>替换镜像仓库地主</pushRegistry>
       <!-- 认证信息 -->
       <authConfig>
          <push>
             <username>仓库账号</username>
             <password>仓库密码</password>
          </push>
       </authConfig>
       <images>
          <image>
             <name>镜像名:镜像版本</name>
             <alias>别名</alias>
             <build>
                 <dockerFile>Dockerfile的路径</dockerFile>
                      <buildOptions>
                          <!-- 网络的配置,与宿主主机共端口号-->
                           <network>host</network>
                       </buildOptions>
             </build>
             <run>
                <namingStrategy>alias</namingStrategy>
                <ports>
                   <port>0.0.0.0:8080:8080</port>
                </ports>
             </run>
          </image>
       </images>
    </configuration>
</plugin>

以上注意的点主要是镜像仓库的地址和账号密码,确保能够连接的上镜像仓库。其实就是镜像的名称和版本,这可能和项目后续更新迭代有关,需要按照自己的规范,怎么方便怎么来。

编写DockerFile

# 指定基础镜像
FROM adoptopenjdk/openjdk11:x86_64-ubuntu-jre-11.0.20_8

# 配置环境变量
ENV WORK_HOME=/opt/

RUN mkdir /conf
RUN mkdir /logs

# 复制文件
COPY target/java.jar $WORK_HOME/

# 暴露端口
EXPOSE 9082

# 项目启动命令
ENTRYPOINT java -jar $WORK_HOME/java.jar --spring.config.location=/conf/application.yml 2>&1 >/logs/log.log

DockerFile要保证镜像文件中的配置文件路径不能错,要设置暴露的端口以及jar包要随着容器启动而启动。容器启动成功后,可以进入容器观看Springboot的日志。

服务器编写拉取镜像脚本

服务器建立.sh文件,复制下面脚本。每次更新,执行脚本即可。

docker stop 容器名

docker rm 容器名

docker pull 镜像名:版本

docker run -p 8082:8082 --name 容器名

`docker-maven-plugin` 是 Maven 插件之一,用于将 Java 应用程序,包括基于 Spring Boot项目,构建为 Docker 镜像。以下是使用这个插件将应用打包推送到私有仓库的基本步骤: 1. **添加插件依赖**:首先,在 `pom.xml` 文件的 `<build>` 标签内添加 `docker-maven-plugin` 的依赖配置,例如: ```xml <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.15</version> <!-- 更新到最新版本 --> </plugin> </plugins> ``` 2. **配置镜像信息**:在 `<project>` 节点下设置 Dockerfile 相关的配置,如镜像名称、标签、基础镜像等。这里假设你有一个名为 `application.jar` 的主程序包文件: ```xml <build> <plugins> <plugin> <configuration> <imageName>${project.artifactId}</imageName> <imageTags> <tag>${project.version}</tag> <tag>latest</tag> <!-- 如果需要常量更新的标签 --> </imageTags> <baseImage>openjdk:8-jdk-alpine</baseImage> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> ``` 3. **私有仓库配置**:如果你有一个私有Docker注册表(如JFrog Artifactory),你需要配置 Maven 的 Docker 接口,通常通过环境变量 `DOCKER_REGISTRY_URL` 和 `DOCKER_USERNAME`、`DOCKER_PASSWORD` 或者认证密钥: ```xml <profiles> <profile> <id>docker-push</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <dockerPushRepository>your-private-repo:5000</dockerPushRepository> <!-- 替换为你的私有仓库地址 --> </properties> <build> <plugins> <plugin> <executions> <execution> <goals> <goal>push</goal> </goals> <phase>deploy</phase> </execution> </executions> <configuration> <registryUrl>${dockerPushRepository}</registryUrl> <username>your-docker-registry-username</username> <password>your-docker-registry-password</password> <!-- 或者从安全环境下获取密钥 --> </configuration> </plugin> </plugins> </build> </profile> </profiles> ``` 4. **构建和推送镜像**:运行 `mvn clean package docker:build docker:push -Pdocker-push` 来构建推送镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值