1. 首页
  2. 技术知识

idea连接docker实现一键部署的方法

1.修改docker配置文件,打开2375端口

[root@s162 docker]# vim /usr/lib/systemd/system/docker.service

#查找 ExecStart,在末尾添加

#后面加上-H tcp://0.0.0.0:2375

[root@s162 docker]# systemctl daemon-reload

[root@s162 docker]# systemctl start docker

## 查看2375端口是否启用

[root@s162 docker]# lsof -i:2375

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

dockerd 27021 root 5u IPv6 352598799  0t0 TCP *:2375 (LISTEN)
2. Idea安装配置docker插件

2.1. idea-plugins市场安装docker插件

略…

2.2. 配置docker

3.springboot项目部署到docker服务器

3.1. 编写docker/dockerfile

3.2.maven添加docker-maven-plugin插件

<plugin>

   <groupId>com.spotify</groupId>

   <artifactId>docker-maven-plugin</artifactId>

   <version>1.0.0</version>

   <configuration>

    <!–指定生成的镜像名,如果不指定tag,默认会使用latest–>

    <imageName>jhs/${project.artifactId}:${project.version}</imageName>

    <!–添加额外的指定标签, 非必须–>

    <!–

    <imageTags>

     <imageTag>${project.version}</imageTag>

    </imageTags>

    –>

    <!– 指定 Dockerfile 路径 :项目根路径下–>

    <dockerDirectory>${project.basedir}/docker</dockerDirectory>

    <!–指定远程 docker api地址–>

    <dockerHost>http://192.168.129.162:2375</dockerHost>

    <!– copy资源 –>

    <resources>

     <resource>

      <targetPath>/</targetPath>

      <directory>${project.build.directory}</directory>

      <include>${project.build.finalName}.jar</include>

     </resource>

    </resources>

    <!–docker build dockerfile时:设置镜像创建时的变量 –>

    <buildArgs>

     <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>

    </buildArgs>

   </configuration>

  </plugin>3.3. docker:build

使用命令$ mvn clean package docker:build -Dmaven.test.skip=true构建镜像,在docker服务器上查看镜像是否上传成功:

3.4 docker:tag

docker命令行格式为:#docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag>

插件配置

<configuration>补充配置:

<configuration>

         <image>jhs/${project.artifactId}:${project.version}</image>

  <!– docker tag 打标签–>

  <newName>192.168.129.160:5000/${project.artifactId}:${project.version}</newName>

</configuration>为镜像打上tag标签,为后续的push做准备:mvn clean docker:tag -Dmaven.test.skip=true -DskipDockerBuild

3.5 docker:push


插件配置

<configuration>补充配置:

<configuration>

         <!– docker push X到远程镜像仓库–>

  <!– serverId: 为在maven setting.xml配置的server信息id–>

  <serverId>nexus-docker-registry</serverId>

  <registryUrl>192.168.129.160:5000</registryUrl>

          <!– 打上tag的新镜像 push 到nexus–>

                <imageName>192.168.129.160:5000/${project.artifactId}</imageName>

</configuration>将上文打上tag标签的镜像,X到Xnexus:mvn clean docker:push -Dmaven.test.skip=true -DskipDockerBuild -DskipDockerTag

3.6 docker插件参数

    -DskipDockerBuild to skip image build-DskipDockerTag to skip image tag-DskipDockerPush to skip image push-DskipDockerto skip any Docker goals

3.7 绑定命令到maven phases

<executions>

  <execution>

   <id>build-image</id>

   <phase>package</phase>

   <goals>

    <goal>build</goal>

   </goals>

  </execution>

  <execution>

   <id>tag-image</id>

   <phase>package</phase>

   <goals>

    <goal>tag</goal>

   </goals>

   <configuration>

    <image>jhs/${project.artifactId}:${project.version}</image>

    <newName>192.168.129.160:5000/${project.artifactId}:${project.version}</newName>

   </configuration>

  </execution>

  <execution>

   <id>push-image</id>

   <phase>deploy</phase>

   <goals>

    <goal>push</goal>

   </goals>

   <configuration>

    <!– docker push X到远程镜像仓库–>

    <!– serverId: 为在maven setting.xml配置的server信息id–>

    <serverId>nexus-docker-registry</serverId>

    <registryUrl>192.168.129.160:5000</registryUrl>

    <imageName>192.168.129.160:5000/${project.artifactId}</imageName>

   </configuration>

  </execution>

</executions>3.8 最佳实践

<properties>

  <docker.host>http://192.168.129.162:2375</docker.host>

  <docker.registry.url>192.168.129.160:5000</docker.registry.url>

</properties>

<build>

<plugins>

        <plugin>

  <groupId>com.spotify</groupId>

  <artifactId>docker-maven-plugin</artifactId>

  <version>1.0.0</version>

  <configuration>

   <imageName>dic/${project.artifactId}:${project.version}</imageName>

   <!–添加额外的指定标签(可配置多个), 若果没做指定,则为latest–>

   <!–

    <imageTags>

     <imageTag>${project.version}</imageTag>

    </imageTags>

    –>

   <!– 指定 Dockerfile 路径 :项目根路径下–>

   <dockerDirectory>${project.basedir}/docker</dockerDirectory>

   <!–指定远程 docker api地址–>

   <dockerHost>${docker.host}</dockerHost>

   <!– copy资源 –>

   <resources>

    <resource>

     <targetPath>/</targetPath>

     <directory>${project.build.directory}</directory>

     <include>${project.build.finalName}.jar</include>

    </resource>

   </resources>

   <!–docker build dockerfile时:设置镜像创建时的变量 –>

   <buildArgs>

    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>

   </buildArgs>

  </configuration>

  <executions>

   <execution>

    <id>build-image</id>

    <phase>package</phase>

    <goals>

     <goal>build</goal>

    </goals>

   </execution>

   <execution>

    <id>tag-image</id>

    <phase>package</phase>

    <goals>

     <goal>tag</goal>

    </goals>

    <configuration>

     <image>dic/${project.artifactId}:${project.version}</image>

     <newName>${docker.registry.url}/${project.artifactId}:${project.version}</newName>

    </configuration>

   </execution>

   <execution>

    <id>push-image</id>

    <phase>deploy</phase>

    <goals>

     <goal>push</goal>

    </goals>

    <configuration>

     <!– docker push X到远程镜像仓库–>

     <!– serverId: 为在maven setting.xml配置的server信息id–>

     <serverId>nexus-docker-registry</serverId>

     <registryUrl>${docker.registry.url}</registryUrl>

     <imageName>${docker.registry.url}/${project.artifactId}</imageName>

    </configuration>

   </execution>

  </executions>

</plugin>

</plugins>

</build>
4.DockerX仓库Harbor安装的步骤详解(补充)

https://www.jb51.net/article/161964.htm

到此这篇关于idea连接docker实现一键部署的文章就介绍到这了,更多相关idea连接docker一键部署内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/107749.html

联系我们