idea中使用docker发布spring boot应用

本文主要记录一下自己在 idea上使用 docker发布 spring boot应用

大纲

  1. 开启docker的远程访问
  2. idea安装docker插件
  3. idea上连接远程docker服务
  4. 新建一个spring boot工程,编写测试接口
  5. pom.xml添加docker构建插件
  6. 在项目中新建Dockfile文件
  7. idea中构建docker镜像
  8. 执行镜像
1、开启docker远程访问

本人使用的阿里云esc云服务器,docker的版本是Docker version 19.03.4, build 9013bf5

1.1、修改docker.server文件,该文件所在的路径是/lib/systemd/system

cd /lib/systemd/system/
vim docker.server

1.2、修改ExecStart如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

1.3、重新加载配置文件

systemctl daemon-reload

1.4、重启docker服务

systemctl restart docker.service

1.5、查看端口是否生效 netstat -nlpt 如下图所示,可见上面配置的2375端口已经生效

1.6、进入阿里云ESC管控台,添加2375/2375安全组配置

2、idea安装docker插件

打开idea偏好中的插件,在其中搜索docker插件进行安装,由于本人的idea插件已经包含了docker插件,跳过此步骤

3、在idea上连接远程docker服务


如果显示Connection succesful则表示已经和远程docker服务连接成功

4、新建一个spring boot工程,编写测试接口

测试接口代码如下

@RestController
public class HelloController {
    @GetMapping(value = "/hello")
    public String hello() {
        return "docker & spring boot";
    }
}

执行maven打包命令mvn clean package -DskipTests=true

5、pom.xml添加docker构建插件

     1.8
     demo


...省略

    
        
            com.spotify
            docker-maven-plugin
            1.1.0
                                         
                
                    ${docker.image.prefix}/${project.artifactId}
                
                
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
    
6、在项目中新建Dockfile文件

6.1、编写dockerfile文件

FROM java:8
VOLUME /tmp
COPY target/demo-0.0.1-SNAPSHOT.jar demo.jar
RUN bash -c "touch /demo.jar"
EXPOSE 8089
ENTRYPOINT ["java","-jar","demo.jar"]

6.2、点击加号按钮,选择docker,选择dockerfile,填写镜像的标签以及绑定的端口

7、在idea中构建docker镜像

点击运行该dockerfile

上面的操作会进行镜像的构建,镜像构建成功之后会出现如下的提示,至此镜像构建成功并发送至远程的服务器上,并自动执行了该镜像。

注意点:由于我是多次进行相同标签的构建,在服务器上执行docker images操作会出现如下的情况

其中出现了REPOSITORY TAG也是这一点很不友好,实际的开发中需要注意。

你可能感兴趣的