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

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

Docker安装

  1. 服务器(CentOS7)没有服务器的话可以在本地装个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配置

首先得装个插件,不过我IDEA2018.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 "admin@imzjw.cn"
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容器中了