我知道的一些打包部署方式无非就是直接打成 jar 包然后扔进服务器(java -jar),又或者打成 war 包扔到 Tomcat

但是容器化部署方式应该是目前的主流方案吧

Docker 安装

  1. 服务器(CentOS 7)没有服务器的话可以在本地装个 VMware 虚拟机,然后去 CentOS官网 下个镜像安装

  2. 安装 Docker

    • 其实安装 Docker 也是非常非常的简单,网上也有很多教程

      首先安装所需的软件包

      1
      2
      3
      sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2

      使用阿里云的镜像地址

      1
      2
      3
      yum-config-manager \
      --add-repo \
      http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

      安装 Docker Engine-Community

      1
      yum install docker-ce docker-ce-cli containerd.io

      最后直接启动 Docker。

      1
      2
      3
      4
      systemctl start docker

      # 查看docker版本
      docker -v

配置 Docker

Docker 安装成功之后,我们需要修改 Docker 配置,也就是开启允许远程访问 Docker 的功能

修改 /usr/lib/systemd/system/docker.service 文件

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

如图

img

配置完成后,保存退出(先按 esc –> :wq),然后重启 Docker

1
2
3
4
# 重启守护进程
systemctl daemon-reload
# 重启docker
service docker restart

如何验证是否开启了呢?

在浏览器输入 http://服务器 IP:2375/images/json

img

验证成功的话,那么 Docker 的安装配置就算完成了,接下来转战到 IDEA

IDEA 配置

首先得装个插件,不过我 IDEA 2018.3 安装的时候就默认自带的,不过保险起见

还是得到 File-> Settings -> Plugins -> Marketplace 查看一下是否安装 Docker 插件

如果 Installed 是灰色按钮的话,说明安装了,没有的话直接点 Installed 然后重启 IDEA

img

接着我们打开 File -> Settings -> Build, Execution, Deployment -> Docker

img

IDEA 配置就算完成了,接下来就是要准备个 Spring Boot 项目了

项目配置

pom.xml 加入 spring-boot-starter-web 依赖就好啦

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后创建个类

1
2
3
4
5
6
7
8
@RestController
public class TestDockerController {

@RequestMapping("/test")
public String testDocker() {
return "test docker";
}
}

创建 Dockerfile

在项目的根目录下 new 一个 file 取名为 Dockerfile

img

并加入以下内容

1
2
3
4
5
FROM hub.c.163.com/library/java:latest
MAINTAINER david "xxx@xxx.xxx"
VOLUME /tmp
ADD target/docker_springboot-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

配置 Maven 插件

pom.xml,添加如下插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>

<configuration>
<dockerHost>http://服务器IP:2375</dockerHost>
<imageName>garvey/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<forceTags>true</forceTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

OK 啦,接下来直接打包

打包

点击 package 即可

img

第一次打包,需要下载基础镜像,可能会慢一点,耐心等待就好了

然后就会看到控制台的打包 log

img

打包成功之后我们就可以在 Docker 容器中看到我们刚刚打包的镜像了

1
docker images
img

启动方式

  1. (第一种)像创建普通容器一样创建这个镜像的容器,输入如下命令

    1
    docker run -d --name garvey -p 8080:8080 garvey/docker_springboot:0.0.1-SNAPSHOT

    启动成功之后,我们就可以访问了。

    http://服务器 IP:8080/test

    img
  2. (第二种)在 IDEA 中运行(推荐)

    在 IDEA 中连接到了 Docker 之后你就会发现 Tool Buttons 多了个 Docker 的工具栏

    img

    接着点击左边那个绿色的启动按钮

    启动成功后我们就可以看到目前 Docker 中的所有容器和镜像了

    img

    此时,我们选中刚刚打包的镜像,右键 Create container -> Create...

    img

    配置容器名称和端口映射关系即可

    img

    注意:如果你刚刚在 Docker 启动过了的话,你要先停止它,不然端口会被占用的

    运行 log 如下

    img

    运行成功之后还是一样在浏览器输入 http://服务器 IP:8080/test 访问

    这样我们的 Spring Boot 项目就发布到 Docker 容器中了