docker微服务部署之:五、利用DockerMaven插件自动构建镜像

释放双眼,带上耳机,听听看~!

docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目

 

在上一篇文章中,我们是手动构建镜像,即:

  • 4.1.2、5.1.2、6.1.2中的将demo_xxx项目打包成app.jar

  • 4.1.4、5.1.4、6.1.4中的:

  • a:创建mydocker目录、上传app.jar至mydocker目录

    • b:执行docker build命令构建镜像

其实以上步骤,都是很繁琐的操作。可利用DockerMaven插件自动构建镜像。

至于要部署微服务项目,除了上述提到的手动构建步骤略过之外,其他步骤,都还是需要执行的。

如何利用DockerMaven插件自动构建呢?

一、(Centos7系统)编辑**/lib/systemd/system/docker.service**

在Delegate=yes下面增加如下两行代码:


1
2
3
4
5
1#将ExecStart的配置值清空  
2ExecStart=  
3#配置ExecStart的值
4ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
5

重启docker


1
2
3
1$ sudo systemctl daemon-reload
2$ sudo systemctl restart docker
3

二、防火墙开启2375端口

需要开启2375端口,不然idea会连不上docker容器


1
2
3
4
5
6
7
8
9
1#添加指定需要开放的端口
2$ sudo firewall-cmd --add-port=2375/tcp --permanent
3success
4#重新载入添加/移除的端口
5$ sudo firewall-cmd --reload
6#也可再查下是否开启指定端口
7$ sudo firewall-cmd --query-port=2375/tcp
8yes
9

 

三、修改demo_eureka、demo_article、demo_zuul三个模块的pom.xml文件

在plugs标签下增加如下内容(注意修改<imageName>标签中的内容,分别为去掉demo_的名称):


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
1&lt;!-- docker 的 maven 插件,官网:https://github.com/spotify/docker-maven-plugin --&gt;
2  &lt;plugin&gt;
3    &lt;groupId&gt;com.spotify&lt;/groupId&gt;
4    &lt;artifactId&gt;docker-maven-plugin&lt;/artifactId&gt;
5    &lt;version&gt;1.1.1&lt;/version&gt;
6    &lt;configuration&gt;
7        &lt;!-- 注意 imageName 一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 --&gt;
8        &lt;!-- 详见:https://github.com/spotify/docker-maven-plugin
9        Invalid repository name ... only [a-z0-9-_.] are allowed--&gt;
10        &lt;!-- 镜像名称,相当于执行docker build -t命令后面跟的镜像名称 --&gt;
11        &lt;imageName&gt;eureka&lt;/imageName&gt;
12        &lt;!-- 基础镜像名称,相当于Dockerfile中的FROM jdk1.8--&gt;    
13        &lt;baseImage&gt;jdk1.8&lt;/baseImage&gt;
14        &lt;!-- 执行的命令,相当于Dockerfile中的ENTRYPOINT--&gt;
15        &lt;entryPoint&gt;[&quot;java&quot;, &quot;-jar&quot;,&quot;/${project.build.finalName}.jar&quot;]&lt;/entryPoint&gt;
16        &lt;resources&gt;
17        &lt;!-- 相当于ADD app.jar / --&gt;
18        &lt;resource&gt;
19            &lt;targetPath&gt;/&lt;/targetPath&gt;
20            &lt;directory&gt;${project.build.directory}&lt;/directory&gt;
21            &lt;include&gt;${project.build.finalName}.jar&lt;/include&gt;
22        &lt;/resource&gt;
23        &lt;/resources&gt;
24        &lt;!-- 需要构建镜像的docker主机ip地址,端口为2375--&gt;
25        &lt;dockerHost&gt;http://192.168.31.181:2375&lt;/dockerHost&gt;
26    &lt;/configuration&gt;
27  &lt;/plugin&gt;
28

 

四、删除eureka、zuul、article服务和镜像。(如果前面没有构建镜像和运行容器,可跳过此步)


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
36
1# 先停止运行中的容器
2$ sudo docker stop eureka zuul article
3eureka
4zuul
5article
6# 然后删除容器
7$ sudo docker rm   eureka zuul article
8eureka
9zuul
10article
11# 再删除镜像
12$ sudo docker rmi  eureka zuul article
13Untagged: eureka:latest
14Deleted: sha256:15c87bf6f8e579d2bee66865f63a532c95c7516757277f1fa78d099830bd322c
15Deleted: sha256:14d818fa91b0f3736cdbb6f0f89f137702be31c29019d6ff5175dd399faf3543
16Deleted: sha256:9181d039053d8a3db8f2feb8962d5ce40ff7624bed10a91e8ce03d0f70c284b1
17Untagged: zuul:latest
18Deleted: sha256:62c091b00c8f5577f89e88e9f2c91ad9375bdae2bc98b3c5e0a6d25554e30c06
19Deleted: sha256:9496a939de7ff2c4b3386a84e29452a9b017d58ec97c95ce5e3c977b3f110fbe
20Deleted: sha256:c733bafbfada2538a77c1cce8af4a7553e5b673ee1b6d9e5ffa634c110361522
21Untagged: article:latest
22Deleted: sha256:7f5954f085f6dbfce11f030114e0fcfaf8b63e47ec7bf89169b9018dfb68ebaa
23Deleted: sha256:9633e0cb462bec49717bed27b97bef3461ef19f379d9caf9dd14e3779f8cb9a5
24Deleted: sha256:ea4c46c473a56daf57b2b0cbe03abb92fa43e967e78fd90c5cc31b817e745875
25#查看所有容器,发现只剩下jdk1.8和mysql,而eureka、zuul和article容器已经被删除了。
26$ sudo docker ps -a
27CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
287ea54b828f3b        jdk1.8                    &quot;/bin/bash&quot;              14 hours ago        Up 9 hours                                   jdk1.8
29652a36962b86        centos/mysql-57-centos7   &quot;container-entrypoin…&quot;   45 hours ago        Up 10 hours         0.0.0.0:3306-&gt;3306/tcp   mysql
30#查看本地镜像,发现只剩下jdk1.8、centos和mysql,而eureka、zuul和article镜像已经被删除了
31$ sudo docker images
32REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
33jdk1.8                    latest              1f2578d93bd0        14 hours ago        598MB
34centos                    centos7             9f38484d220f        5 days ago          202MB
35centos/mysql-57-centos7   latest              ee80146ff512        4 weeks ago         453MB
36

 

五、在原来的打包命令mvn clean package后面加上 docker:build

除了上述提到的利用自动化部署可略过的步骤之外,其他步骤不变。然后在打包项目的时候,使用如下命令:

docker微服务部署之:五、利用DockerMaven插件自动构建镜像

在打包的过程中,可以看到,除了完成了把项目打成app.jar之外,还执行了构建镜像操作

docker微服务部署之:五、利用DockerMaven插件自动构建镜像

在192.168.31.181本地镜像中,查看是否有eureka镜像


1
2
3
4
1$ sudo docker images
2REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
3eureka                    latest              9b410097b49e        1 second ago        645MB
4

demo_article和demo_zuul的打包方式是相似的。

六、其他说明

由于修改/lib/systemd/system/docker.service文件之后,执行了systemctl restart docker重启了docker,所以docker中的mysql容器,暂时是没有启动的,需要手动启动。

查看docker中所有容器的状态:


1
2
3
4
5
1$ sudo docker ps -a
2CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                        PORTS               NAMES
37ea54b828f3b        jdk1.8                    &quot;/bin/bash&quot;              14 hours ago        Exited (137) 28 minutes ago                       jdk1.8
4652a36962b86        centos/mysql-57-centos7   &quot;container-entrypoin…&quot;   45 hours ago        Exited (0) 28 minutes ago                         mysql
5

可以看到,mysql的status为Exited 表示为非启动状态


1
2
3
4
5
6
7
8
1# 启动mysql容器
2$ sudo docker start mysql
3mysql
4# 查看运行中的容器,UP表示运行中
5$ sudo docker ps
6CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
7652a36962b86        centos/mysql-57-centos7   &quot;container-entrypoin…&quot;   45 hours ago        Up About a minute   0.0.0.0:3306-&gt;3306/tcp   mysql
8

 

docker微服务部署之:六、Rancher管理部署微服务

给TA打赏
共{{data.count}}人
人已打赏
安全网络

CDN安全市场到2022年价值76.3亿美元

2018-2-1 18:02:50

安全漏洞

从 Stack Overflow 复制代码导致 GitHub 项目漏洞多

2019-10-27 11:12:22

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索