SringBoot 如何打包成镜像

548 阅读1分钟

前期准备

参考前期文章

部署docker私有镜像

修改docker.service内容如下

# 原文件
ExecStart=/usr/bin/dockerd

# 修改成如下
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
让Docker支持http上传镜像
# 注意替换成你的服务器IP
[root@k8s-master ~]$ echo '{ "insecure-registries":["http://10.8.135.104:5000"] }' > /etc/docker/daemon.json

# 使配置生效
[root@k8s-master ~]$ systemctl daemon-reload

# 重新启动Docker服务
[root@k8s-master ~]$ systemctl restart docker

# 开启防火墙的Docker构建端口
[root@k8s-master ~]$ firewall-cmd --zone=public --add-port=2375/tcp --permanent
[root@k8s-master ~]$ firewall-cmd --reload

打包成镜像

这里采用maven插件打包成镜像,上传到私有服务器

maven 配置如下

 <properties>
  <docker.host>http://192.168.1.103:2375</docker.host>
  <docker.maven.plugin.version>1.2.0</docker.maven.plugin.version>
 </properties>
 
 <build>
  <finalName>k8s-owater</finalName>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
     <mainClass>com.owater.kubedocker.KubedockerApplication</mainClass>
     <executable>true</executable>
    </configuration>
   </plugin>
   <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>${docker.maven.plugin.version}</version>
    <executions>
     <execution>
      <id>build-image</id>
      <phase>package</phase>
      <goals>
       <goal>build</goal>
      </goals>
     </execution>
    </executions>
    <configuration>
     <imageName>k8s-owater/${project.artifactId}:${project.version}</imageName>
     <dockerHost>${docker.host}</dockerHost>
     <baseImage>java:8</baseImage>
     <entryPoint>["java", "-jar", "","/${project.build.finalName}.jar"]</entryPoint>
     <resources>
      <resource>
       <targetPath>/</targetPath>
       <directory>${project.build.directory}</directory>
       <include>${project.build.finalName}.jar</include>
      </resource>
     </resources>
    </configuration>
   </plugin>
  </plugins>
 </build>

${docker.host} 为镜像仓库 baseImage springboot项目需要依赖java镜像 entryPoint 镜像启动后执行的命令

进行maven package即可将打包好的镜像自动上传到指定的仓库,操作如下图:

打包镜像
打包镜像
检查镜像

看到BUILD SUCCESS,说明打包成功并且也上传成功了

上传镜像
上传镜像
# 查看镜像
[root@k8s-master ~]$ docker images

启动镜像

# 通过docker run方式启动镜像
[root@k8s-master ~]$ docker run -d -p 8080:8080 --name k8s-owater k8s-owater/kubedocker:0.0.1-SNAPSHOT

# 查看启动的容器
[root@k8s-master ~]$ docker ps
CONTAINER ID        IMAGE                                                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
0e04c642ad09        k8s-owater/kubedocker:0.0.1-SNAPSHOT                            "java -jar -Dspring.…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->8080/tcp   k8s-owater

请求接口

通过postman请求接口