当Docker遇到Intellij IDEA,再次解放了生产力

DEA是Java开发利器,Spring Boot是Java生态中最流行的微服务框架,Docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?

开发前准备

1、Docker的安装可以参考: https://docs.docker.com/install/

2、配置Docker远程连接端口:

vi /usr/lib/systemd/system/docker.service

找到ExecStart,在最后面添加-H tcp://0.0.0.0:2375,如下图所示:


当Docker遇到Intellij IDEA,再次解放了生产力_第1张图片
image.png

3、重启Docker

systemctl daemon-reload

systemctl start docker

4、开放端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent  

5、IDEA安装插件,重启:

当Docker遇到Intellij IDEA,再次解放了生产力_第2张图片
image.png

6、连接远程Docker

  1. 编辑配置:
当Docker遇到Intellij IDEA,再次解放了生产力_第3张图片
image.png
  1. 填远程Docker地址:

    当Docker遇到Intellij IDEA,再次解放了生产力_第4张图片
    image
  2. 连接成功,会列出远程Docker容器和镜像:

    当Docker遇到Intellij IDEA,再次解放了生产力_第5张图片
    image

新建项目

创建Spring Boot项目

项目结构图:

当Docker遇到Intellij IDEA,再次解放了生产力_第6张图片
image.png

配置pom文件:





4.0.0



docker-demo

com.demo

1.0-SNAPSHOT



    org.springframework.boot

    spring-boot-starter-parent

    2.0.2.RELEASE

    







     UTF-8

     UTF-8

     com.demo

     1.8





    

      

        org.springframework.boot

        spring-boot-maven-plugin

      

    

       com.spotify

       docker-maven-plugin

       1.0.0

       

          src/main/docker

          

            

                /

                ${project.build.directory}

                ${project.build.finalName}.jar

            

          

       

    

    

        maven-antrun-plugin

        

             

                 package

                

                    

                        

                    

                 

                

                    run

                

                

        

    



   







    org.springframework.boot

    spring-boot-starter-web





org.springframework.boot

    spring-boot-starter-test

    test





    log4j

    log4j

    1.2.17






在src/main目录下创建Docker目录,并创建Dockerfile文件

FROM openjdk:8-jdk-alpine

ADD *.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在resource目录下创建application.properties文件

logging.config=classpath:logback.xml

logging.path=/home/developer/app/logs/

server.port=8990

创建DockerApplication文件

@SpringBootApplication

public class DockerApplication {

public static void main(String[] args) {

    SpringApplication.run(DockerApplication.class, args);

}

} 

创建DockerController文件

@RestController

public class DockerController {

static Log log = LogFactory.getLog(DockerController.class);



@RequestMapping("/")

public String index() {

    log.info("Hello Docker!");

    return "Hello Docker!";

}

} 

增加配置

image
当Docker遇到Intellij IDEA,再次解放了生产力_第7张图片
image.png
当Docker遇到Intellij IDEA,再次解放了生产力_第8张图片
image.png

命令解释:

  • Image tag:指定镜像名称和tag,镜像名称为docker-demo,tag为1.1
  • Bind ports:绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
  • Bind mounts:将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个Spring Boot项目会将日志打印在容器/home/developer/app/logs/目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。

Maven打包

当Docker遇到Intellij IDEA,再次解放了生产力_第9张图片
image.png

运行

image.png
当Docker遇到Intellij IDEA,再次解放了生产力_第10张图片
image.png

先pull基础镜像,然后再打包镜像,并将镜像部署到远程Docker运行。

当Docker遇到Intellij IDEA,再次解放了生产力_第11张图片
image.png

这里我们可以看到镜像名称为docker-demo:1.1,Docker容器为docker-server。

运行成功

当Docker遇到Intellij IDEA,再次解放了生产力_第12张图片
image.png

浏览器访问

image

日志查看

image.png

自此通过IDEA部署Spring Boot项目到Docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!

你可能感兴趣的:(当Docker遇到Intellij IDEA,再次解放了生产力)