EP8 在Idea中使用Docker

57 阅读2分钟

EP8 在Idea中使用Docker

编写一个简单的SpringBootWeb程序

创建一个最简单的SpringBootWeb程序

  • 目录

    image.png

  • pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cy4ever</groupId>
    <artifactId>SpringBootDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBootDemo</name>
    <description>SpringBootDemo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>SpringBootDemo</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • 添加一个启动程序
package com.cy4ever.springbootdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootDemoApplication.class, args);
	}

}
  • 一个controller
package com.cy4ever.springbootdemo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author chenrui
 * @date 2022/10/31 17:01
 */
@RestController
@RequestMapping("/")
public class HelloWorldController {

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String helloWorld() {
		return "helloWorld";
	}
}
  • 启动项目

    image.png

  • 通过浏览器访问8080端口

    image.png

编写Dockerfile

在项目根目录新建文件Dockerfile

### 基础镜像
FROM openjdk:8-jdk-alpine
#作者
MAINTAINER Chenrui
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp
#应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD target/SpringBootDemo.jar /SpringBootDemo.jar
#启动容器时的进程
ENTRYPOINT ["java","-jar","/SpringBootDemo.jar"]
#暴露端口,这个端口对应的是服务本身的端口
EXPOSE 8080

注意「ADD target/SpringBootDemo.jar /SpringBootDemo.jar」这里jar的名称要与pom.xml中的finalName对应.

Idea中安装Docker插件

Idea设置->Plugins->Marketplace中搜索Docker,点击install安装(图中已经安过了) image.png 安装好以后重启Idea,就可以在设置->build中看到Docker设置了

如果要连接本地Docker通过新建按钮添加一个Docker Daemon,连接方式选择Docker for Mac(Windows) image.png 如果要连接远程的Docker Daemon,首先需要开启Docker Daemon的远程连接端口:

  1. ssh连接Docker所在的服务器(此处Centos7.x)
  2. 编辑docker.service文件
vim /usr/lib/systemd/system/docker.service

3. 找到ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,这里2375端口可以自定义

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

4. 重启docker

systemctl daemon-reload  
systemctl restart docker  

开启远程连接端口后,在Idea中新建Docker Daemon连接方式选择TCP scoket,Engine API URL填写:tcp:ip:2375(端口与上文设置的需要一致)

image.png

远程连接Docker Server并打包部署服务

此时我们web项目、Dockerfile、Docker插件都已经准备好了;下面就需要将项目打包部署到docker里面运行了。

  • 打开Run/Debug 配置,新增配置,选择Dockerfile

    image.png 设置好以后运行:

会先通过maven打包项目 image.png 然后构建镜像并且在远程的docker上部署 image.png image.png