Docker -- 06 -- IDEA远程部署项目到Docker

以往我们部署项目的时候,每次都需要先打包,然后上传服务器,再将原来的服务停止并删除原有的包,最后运行新的包;这样整个一套流程下来,一两次还好,次数多了就会很繁琐,因此我们可以使用 Docker 来实现一键化部署

  • Docker 版本:18.09.6

  • IDEA 版本:2018.3.1 x64


一、开启远程连接端口

远程连接 Docker 需要用到 2375 端口,默认是关闭的,我们需要将其开启 (此种方法仅在测试环境下进行)

  • vim /usr/lib/systemd/system/docker.service

  • ExecStart=/usr/bin/dockerd-current 后加上 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  • systemctl daemon-reload

  • systemctl restart docker

重启 Docker 后,我们再通过 IDEA 来连接 Docker

在这里插入图片描述

如上所示,在配置了 IP + 端口后,远程连接 Docker 成功


二、搭建项目

  • application.yml

    server:
      port: 9998
    
  • HelloController.java

    @RestController
    public class HelloController {
    
        @GetMapping(value = "/hello")
        public String hello() {
            return "Hello World !";
        }
    }
    

三、配置插件

搭建完后在 pom.xml 中添加 Docker 插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    
    <!-- 将插件绑定在某个阶段执行 -->
    <executions>
        <execution>
            <id>build-image</id>
            <!-- 将 mvn docker:build 绑定至 mvn package 上 -->
            <!-- 即当执行 mvn package 时,会自动执行 mvn docker:build 生成镜像 -->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    
    <configuration>
        <!-- 指定生成的镜像名 -->
        <imageName>${project.artifactId}</imageName>
        <!-- 指定版本号 -->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <!-- 指定远程服务器 Docker 地址 -->
        <dockerHost>http://******:2375</dockerHost>
        <!-- 依赖镜像 -->
        <baseImage>jdk:8.0</baseImage>
        <!-- 作者信息 -->
        <maintainer>xj</maintainer>
        <!-- 复制本地 jar 包到 Docker 容器中指定位置 -->
        <resources>
            <resource>
                <!-- 容器中自定义 jar 包存放路径 -->
                <targetPath>/data/program/</targetPath>
                <!-- 本地 jar 包所在路径 -->
                <directory>${project.build.directory}</directory>
                <!-- 本地 jar 包名称 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <entryPoint>["java", "-jar", "/data/program/${project.build.finalName}.jar"]</entryPoint>
    </configuration>
</plugin>

如上所示,我们在插件中直接设置好了相关配置,其实就是将 Dockerfile 文件中的内容直接写在了配置文件中 (此外我们可以通过 <dockerDirectory> 标签来指定 Dockerfile 文件的位置)


四、打包部署

此时我们直接在 IDEA 右侧的 maven 工具中,执行 package 命令,待打包完成后会自动执行 mvn docker:build 命令

在这里插入图片描述

当执行完毕后,我们通过 docker images 来查看当前镜像,此时项目镜像已生成

在这里插入图片描述


五、创建容器,启动镜像

在这里插入图片描述
在这里插入图片描述
image

如上所示,我们可以指定容器内外端口的映射关系,其他参数我们在 Docker 插件中已经设置过了,可以不用再设置

  • 7041

    • 容器对外端口
  • 9998

    • 容器内程序自身对外端口

此时容器已启动,我们通过浏览器可以来进行验证

image


六、参考资料

posted @ 2019-07-06 16:44  GeneXu  阅读(120)  评论(0)    收藏  举报