idea整合dockerfile插件,打包镜像(docker环境可不安装)

4,299 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情


1.本地idea部署

1.1idea安装docker插件

idea高版本默认情况下,都是已经有集成docker插件,所以这里配置一下就可以了。

image-20211117160329576.png

如上图所示,连接到公司服务器的docker,显示Connection successful即可。

注意,这里远程服务器上面的docker,需要服务器的docker开启远程访问才行,参考docker开启远程

配置好了之后,点击connect连上docker服务。

image-20211117161432280.png

可以看到该docker的容器镜像,也能看到我们打包的镜像。

1.2dockerfile-maven-plugin插件打包(auth为例)

1.2.1docker环境说明

首先要明白:镜像的制作以及推送操作,都是由Docker来完成的,所以,必须要安装Docker环境。

简单的说dockerfile-maven-plugin只是简化了直接操作Docker的复杂度,该是Docker完成的事情,还得由Docker来完成。

所以,明白这一点之后,就知道了并不是一定要在本地安装Docker环境,只要有Docker环境就可以了。

既然是只要有Docker环境就可以了,那么这里我使用服务器上的Docker环境(当然,也可以使用本地的Docker环境,使用本地Docker环境无需额外的配置,按照教程在本地安装上Docker就可以了)。

要使用服务器的Docker环境,需要配置一个环境变量(默认情况下,dockerfile-maven-plugin插件是连接本地的Docker环境,即127.0.0.1),环境变量的配置如下,改成你自己的服务器Docker环境即可(可能需要重启电脑):DOCKER_HOST tcp://192.168.4.178:2375

image-20211117163335684.png

1.2.2打包镜像文件准备

  • Dockerfile
FROM 192.168.4.151/jxcyjjdn/jxcyjjdn-base:jdk8
​
RUN mkdir -p /opt/jxcyjjdn
​
WORKDIR /opt/jxcyjjdn
​
COPY ./target/jpaas-auth.jar .
​
COPY ./startServer.sh .
​
ENTRYPOINT ["sh", "/opt/jxcyjjdn/startServer.sh"]
  • startServer.sh
#!/bin/bashsource /etc/profile
​
# 启动服务端
cd /opt/jxcyjjdn && nohup java -jar -Xms256m -Xmx256m jpaas-auth.jar  > jpaas-auth.out &
​
cd /opt/jxcyjjdn && tail -f jpaas-auth.out

1.2.3dockerfile打包

  • dockerfile-maven-plugin插件
<properties>
    <!-- 推荐使用Harbor -->
    <docker.registry.url>127.0.0.1</docker.registry.url>
    <docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>
    <docker.username>llsydn</docker.username>
    <docker.password>llsydn</docker.password>
    <docker.namespace>llsydn</docker.namespace>
    <docker.plugin.version>1.4.13</docker.plugin.version>
</properties>

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <executions>
            <execution>
               <goals>
                  <goal>repackage</goal>
               </goals>
            </execution>
         </executions>
      </plugin>

      <plugin>
         <groupId>com.spotify</groupId>
         <artifactId>dockerfile-maven-plugin</artifactId>
         <version>${docker.plugin.version}</version>
         <configuration>
            <username>${docker.username}</username>
            <password>${docker.password}</password>
            <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
            <tag>${project.version}</tag>
            <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
            <buildArgs>
               <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
            </buildArgs>
            <skip>false</skip>
         </configuration>
      </plugin>

   </plugins>
   <finalName>${project.artifactId}</finalName>
</build>
  • 开始打包

image-20211117164343176.png

  • 打包结果

image-20211117164422061.png

  • 我们就能看到docker服务器上面,有这个镜像的存在。

image-20211117164526905.png

1.3dockerfile-maven-plugin插件推送(auth为例)

1.3.1推送harbor准备

由于我要推送的仓库是私有的,需要用户名密码,所以,要在maven的配置文件(setting文件)中,添加如下配置:

<!--harbor-->
<server>
    <id>192.168.4.151</id>
    <username>xxxx</username>
    <password>xxxx</password>
    <configuration>
        <email>1091391667@qq.com</email>
    </configuration>
</server>

image.png

1.3.2push到harbor仓库

image.png

1.3.3最终的效果

image-20211117165552554.png


好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!

image.png