个人博客 毕业设计8-微服务容器部署与持续集成

这一章大部分都是讲怎么部署上线的。对于这方面,我一点都不懂。。。也不知道教程在干嘛。
走一步算一步吧。

一、Dockerfile

这是一系列命令和参数构成的脚本,最终可以根据创建一个新的镜像。就是说,之前的镜像都是网上下载的嘛,现在我要的镜像就是我自己创建的,里面放的是什么都是我自己弄的。
为什么不网上下载?因为网上没有JDK下载。。只能从本地放到docker上

1、使用脚本创建镜像

1)把jdk压缩包和Dockerfile(名字固定)放在一个文件夹

在这里插入图片描述
jdk压缩包就从官网下载就行,那个Dockerfile的内容如下

#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER e10000qiang
#切换工作目录
WORKDIR /usr
#创建目录
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中,相当于解压jdk到文件中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

2)Linux命令构件镜像

docker build -t='jdk1.8' .注意后面的空格和点

#先进入到文件中
[root@pinyoyougou-docker ~]# cd /usr/local/dockerjdk8
[root@pinyoyougou-docker dockerjdk8]# ls
Dockerfile  jdk-8u171-linux-x64.tar.gz
#执行命令构建镜像
[root@pinyoyougou-docker dockerjdk8]# docker build -t='jdk1.8' .
Sending build context to Docker daemon  190.9MB
Step 1/9 : FROM centos:7
 ---> 5182e96772bf
Step 2/9 : MAINTAINER e10000qiang
 ---> Running in 2a7aad6468c0
Removing intermediate container 2a7aad6468c0
 ---> cae2d0985f4d
Step 3/9 : WORKDIR /usr
Removing intermediate container 2a91077a4e86
 ---> d2f9ba2b9542
Step 4/9 : RUN mkdir /usr/local/java
 ---> Running in f7da496d9577
Removing intermediate container f7da496d9577
 ---> 3dda0c52bb58
Step 5/9 : ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
 ---> a3050b87d88f
Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
 ---> Running in 039ee29648c4
Removing intermediate container 039ee29648c4
 ---> 1889750a3add
Step 7/9 : ENV JRE_HOME $JAVA_HOME/jre
 ---> Running in b0c4b838b6b5
Removing intermediate container b0c4b838b6b5
 ---> be5fbffce8b5
Step 8/9 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
 ---> Running in de5f3cbdad86
Removing intermediate container de5f3cbdad86
 ---> 064a0841b548
Step 9/9 : ENV PATH $JAVA_HOME/bin:$PATH
 ---> Running in 4ff7715f1e34
Removing intermediate container 4ff7715f1e34
 ---> c864261c557a
Successfully built c864261c557a
Successfully tagged jdk1.8:latest
#查看镜像
[root@pinyoyougou-docker dockerjdk8]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
jdk1.8                    latest              c864261c557a        About a minute ago   587MB
#jdk镜像已经创建了

3)创建容器

docker run -it --name=tensquare_jdk8 jdk1.8 /bin/bash

#创建容器
[root@pinyoyougou-docker ~]# docker run -it --name=tensquare_jdk8 jdk1.8 /bin/bash
[root@pinyoyougou-docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9f58ad0b83e6        jdk1.8              "/bin/bash"         3 minutes ago       Up 3 minutes                            tensquare_jdk8

二、Docker私有仓库

这是一个将Java代码打包好,放在docker镜像的东西。每一个微服务打包成一个jar放到docker中,变成镜像,然后使用创建实例,启动之,就可以不用本地的IDEA启动项目了。

1、私有仓库搭建与配置

1)下载镜像

docker pull registry
我用的教程给的,具体版本不知道,但是是18年7月左右的版本

2)创建私有仓库镜像

docker run -di --name=tensquare_registry -p 5000:5000 registry

3)查看私有仓库是否成功

http://192.168.12.128:5000/v2/_catalog
在这里插入图片描述

4)修改daemon.json

vi /etc/docker/daemon.json
修改为

{
    
    
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.12.128:5000"]
}
  • 第一个参数是中国的docker,速度变快
  • 第二个是私有仓库registry的地址

重启docker
systemctl restart docker

扫描二维码关注公众号,回复: 13087494 查看本文章

5)镜像上传到私有仓库

①启动registry

[root@pinyoyougou-docker ~]# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                       PORTS                                            NAMES
97b4dc46f84d        registry                    "/entrypoint.sh /etc…"   13 minutes ago      Exited (2) 6 minutes ago                                                      tensquare_registry
9f58ad0b83e6        jdk1.8                      "/bin/bash"              27 minutes ago      Exited (137) 6 minutes ago                                                    tensquare_jdk8
151f5d6aeb2b        rabbitmq:management         "docker-entrypoint.s…"   3 weeks ago         Exited (0) 22 hours ago                                                       tensquare_rabbitmq
a0472121de86        mobz/elasticsearch-head:5   "/bin/sh -c 'grunt s…"   3 weeks ago         Exited (255) 3 weeks ago     0.0.0.0:9100->9100/tcp                           tensquare_header
3a15f545748a        elasticsearch:7.9.3         "/tini -- /usr/local…"   3 weeks ago         Exited (255) 3 weeks ago     0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   tensquare_es
b8b7ee9aab14        mongo                       "docker-entrypoint.s…"   5 weeks ago         Exited (0) 22 hours ago                                                       tensquare_mongo
79abcd03201d        redis                       "docker-entrypoint.s…"   5 weeks ago         Exited (0) 22 hours ago                                                       tensquare_redis
a7e32c78df03        centos/mysql-57-centos7     "container-entrypoin…"   7 weeks ago         Exited (0) 22 hours ago                                                       tensquare_mysql
[root@pinyoyougou-docker ~]# docker start 97b4dc46f84d
97b4dc46f84d
[root@pinyoyougou-docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
97b4dc46f84d        registry            "/entrypoint.sh /etc…"   13 minutes ago      Up 3 seconds        0.0.0.0:5000->5000/tcp   tensquare_registry

②标记此镜像为私有仓库镜像

[root@pinyoyougou-docker ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
jdk1.8                    latest              c864261c557a        32 minutes ago      587MB
elasticsearch             7.9.3               1ab13f928dc8        2 months ago        742MB
centos/mysql-57-centos7   latest              2e4ddfafaa6f        2 years ago         445MB
gogs/gogs                 latest              2fb3b88053d6        2 years ago         94.2MB
mongo                     latest              8bf72137439e        2 years ago         380MB
rancher/server            latest              38d4a75fa8f9        2 years ago         1.08GB
centos                    7                   5182e96772bf        2 years ago         200MB
redis                     latest              4e8db158f18d        2 years ago         83.4MB
tomcat                    7-jre7              fa2c33156fb9        2 years ago         357MB
rabbitmq                  management          df80af9ca0c9        2 years ago         149MB
grafana/grafana           latest              3e16e05be9a3        2 years ago         245MB
nginx                     latest              c82521676580        2 years ago         109MB
jenkins                   latest              cd14cecfdb3a        2 years ago         696MB
registry                  latest              b2b03e9146e1        2 years ago         33.3MB
elasticsearch             5.6.8               6c0bdf761f3b        2 years ago         570MB
google/cadvisor           latest              75f88e3ec333        3 years ago         62.2MB
mobz/elasticsearch-head   5                   b19a5c98e43b        3 years ago         824MB
tutum/influxdb            latest              c061e5808198        4 years ago         290MB
[root@pinyoyougou-docker ~]# docker tag jdk1.8 192.168.12.128:5000/jdk1.8
[root@pinyoyougou-docker ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.12.128:5000/jdk1.8   latest              c864261c557a        33 minutes ago      587MB
jdk1.8                       latest              c864261c557a        33 minutes ago      587MB
elasticsearch                7.9.3               1ab13f928dc8        2 months ago        742MB
centos/mysql-57-centos7      latest              2e4ddfafaa6f        2 years ago         445MB
gogs/gogs                    latest              2fb3b88053d6        2 years ago         94.2MB
mongo                        latest              8bf72137439e        2 years ago         380MB
rancher/server               latest              38d4a75fa8f9        2 years ago         1.08GB
centos                       7                   5182e96772bf        2 years ago         200MB
redis                        latest              4e8db158f18d        2 years ago         83.4MB
tomcat                       7-jre7              fa2c33156fb9        2 years ago         357MB
rabbitmq                     management          df80af9ca0c9        2 years ago         149MB
grafana/grafana              latest              3e16e05be9a3        2 years ago         245MB
nginx                        latest              c82521676580        2 years ago         109MB
jenkins                      latest              cd14cecfdb3a        2 years ago         696MB
registry                     latest              b2b03e9146e1        2 years ago         33.3MB
elasticsearch                5.6.8               6c0bdf761f3b        2 years ago         570MB
google/cadvisor              latest              75f88e3ec333        3 years ago         62.2MB
mobz/elasticsearch-head      5                   b19a5c98e43b        3 years ago         824MB
tutum/influxdb               latest              c061e5808198        4 years ago         290MB
  • 这里多出一个jdk1.8的镜像

③上传标记的镜像

[root@pinyoyougou-docker ~]# docker push 192.168.12.128:5000/jdk1.8
The push refers to repository [192.168.12.128:5000/jdk1.8]
2dd663f47b61: Pushed 
6b26961a8a01: Pushed 
1d31b5806ba4: Pushed 
latest: digest: sha256:d10b8d1a02657d5b9fc551153b46283e5a75f355f26b24b373aadae891fa93a3 size: 949

④查看
http://192.168.12.128:5000/v2/_catalog
在这里插入图片描述
私有仓库已经把jdk上传进去了

2、DockerMaven插件

微服务有那么多个,每一个微服务都要一个个上传,这样太麻烦了。
然后maven也帮我们弄好了。。。让我们快速自动部署

1)修改宿主机docker配置,让本地电脑可以直接修改宿主机的docker

vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

  • 0.0.0.0 表示所有IP都可以访问

在这里插入图片描述

2)刷新配置

[root@pinyoyougou-docker ~]# systemctl daemon-reload
[root@pinyoyougou-docker ~]# systemctl restart docker
[root@pinyoyougou-docker ~]# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
97b4dc46f84d        registry                    "/entrypoint.sh /etc…"   22 hours ago        Exited (2) 20 seconds ago                                                    tensquare_registry
[root@pinyoyougou-docker ~]# docker start 97b4dc46f84d
97b4dc46f84d

3)将每一个微服务的pom.xml新增配置

以config为例子,因为是配置类,所以肯定是第一个跑,然后是eureka,再是各个模块

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>tensquare</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>tensquare_config</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
    </dependencies>

    <build>
<!--        名称-->
        <finalName>app</finalName>
        <plugins>
<!--            如果报错Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3-->
<!--            那么打开仓库repository\org\apache\maven\plugins\maven-site-plugin 查看有哪些版本-->
<!--            然后查看maven的版本号,我的maven是3.6.3,那么maven-site-plugin要高过maven版本?-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.7.1</version>
            </plugin>

<!--            springboot的插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
<!--            docker的maven插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
<!--                配置信息-->
                <configuration>
<!--                    IP地址-->
<!--                    project.artifactId,就是上面的 <artifactId>tensquare_config</artifactId>-->
<!--                    project.version就是  parent里的 <version>1.0-SNAPSHOT</version>  -->
                    <imageName>192.168.12.128:5000/${project.artifactId}:${project.version}</imageName>
<!--                    基础镜像,就是刚才配好的jdk-->
                    <baseImage>jdk1.8</baseImage>
<!--                    cmd命令,打包Java,执行 java -jar 名字.jar-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
<!--                            照抄-->
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
<!--                    刚才设置的2375端口号,可以让所有IP地址都访问宿主机的docker-->
                    <dockerHost>http://192.168.12.128:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • 要解释的东西都在上面了,主要就是<build>

然后会自动生成Dockerfile

FROM jdk1.8 
ADD app.jar / 
ENTRYPOINT ["java","-jar","/app.jar"]

生成在哪我也不知道。。。

4)cmd命令,在tensquare_config目录下执行命令,进行打包和上传

mvn clean package docker:build -DpushImage

  • mvn clean先清理target里面的文件
  • -DpushImage打包上传到docker的私有仓库中

5)效果与启动镜像

①访问http://192.168.12.128:5000/v2/_catalog
在这里插入图片描述
仓库已经加入了

②在docker启动该微服务模块

#可以看到,本地config模块通过registry,将jar打包成镜像上传到docker中了
[root@pinyoyougou-docker ~]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
192.168.12.128:5000/tensquare_config   1.0-SNAPSHOT        4be6d7cecac9        3 minutes ago       626MB
192.168.12.128:5000/jdk1.8             latest              c864261c557a        24 hours ago        587MB
jdk1.8                                 latest              c864261c557a        24 hours ago        587MB
elasticsearch                          7.9.3               1ab13f928dc8        2 months ago        742MB
centos/mysql-57-centos7                latest              2e4ddfafaa6f        2 years ago         445MB
gogs/gogs                              latest              2fb3b88053d6        2 years ago         94.2MB
mongo                                  latest              8bf72137439e        2 years ago         380MB
rancher/server                         latest              38d4a75fa8f9        2 years ago         1.08GB
centos                                 7                   5182e96772bf        2 years ago         200MB
redis                                  latest              4e8db158f18d        2 years ago         83.4MB
tomcat                                 7-jre7              fa2c33156fb9        2 years ago         357MB
rabbitmq                               management          df80af9ca0c9        2 years ago         149MB
grafana/grafana                        latest              3e16e05be9a3        2 years ago         245MB
nginx                                  latest              c82521676580        2 years ago         109MB
jenkins                                latest              cd14cecfdb3a        2 years ago         696MB
registry                               latest              b2b03e9146e1        2 years ago         33.3MB
elasticsearch                          5.6.8               6c0bdf761f3b        2 years ago         570MB
google/cadvisor                        latest              75f88e3ec333        3 years ago         62.2MB
mobz/elasticsearch-head                5                   b19a5c98e43b        3 years ago         824MB
tutum/influxdb                         latest              c061e5808198        4 years ago         290MB
#这样就简单了,已经是个镜像,那么创建其并且使用,就相当于启动应用了
[root@pinyoyougou-docker ~]# docker run -di --name=tensquare_config -p 12000:12000 192.168.12.128:5000/tensquare_config:1.0-SNAPSHOT
cb6c2178f16ee6ced799465a49760d5a1829796f96c74d3fafe2a07891e16f27
[root@pinyoyougou-docker ~]# docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS              PORTS                                                                                                                      NAMES
cb6c2178f16e        192.168.12.128:5000/tensquare_config:1.0-SNAPSHOT   "java -jar /app.jar"     47 seconds ago      Up 46 seconds       0.0.0.0:12000->12000/tcp                                                                                                   tensquare_config
97b4dc46f84d        registry                                            "/entrypoint.sh /etc…"   24 hours ago        Up 2 hours          0.0.0.0:5000->5000/tcp                                                                                                     tensquare_registry
9f58ad0b83e6        jdk1.8                                              "/bin/bash"              24 hours ago        Up 21 seconds                                                                                                                                  tensquare_jdk8
151f5d6aeb2b        rabbitmq:management                                 "docker-entrypoint.s…"   3 weeks ago         Up 15 seconds       0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp   tensquare_rabbitmq

因为这个是config类,将yml都放在网上了,随便打开一个yml看试试
在这里插入图片描述

这是本地的IDEA没有启动任何应用时的

三、理解持续集成

看到上面的,是已经把代码上传上去了。
但是,比如我更新了一点代码,就需要把原本的镜像删除,然后再maven上传,创建镜像启动。这样很麻烦,如果能更简单好了。
而且,上传的代码中,比如sms模块,有个人的阿里云密钥,上传到GitHub或者gitee又不安全。

教程提供了一个思路:在docker中创建一个基于虚拟机地址的git工具(Gogs),把代码都上传到该处,这样就能避免公开了。然后,再用Jenkins将git中的代码,进行一系列设置,将git中的代码自动打包到docker中创建一个镜像。虽然两个工具的安装与使用过程比较困难,但是学会后就能一劳永逸。

四、Gogs

Gogs 是一款极易搭建的自助 Git 服务。基于虚拟机的地址搭建一个git仓库,供本地代码上传给Gogs,但是又不会公开让别人发现。

五、Jenkins

一个GUI配置界面,用于将git仓库中指定的代码生成docker镜像。而且,git上面的只是代码而已,没有maven中的jar包,Jenkins也会帮我们安装好的,真实非常神奇呢

1、安装

docker中安装Jenkins很容易出错,折腾崩溃了。所以决定采用Linux中解压包的形式安装。

1)JDK安装

因为Jenkins基于JDK安装,不用不行啊,所以只好将Linux配置JDK环境。
去官网下载一个jdk8,jdk‐8u171‐linux‐x64.rpm
拉近虚拟机中
在这里插入图片描述
输入命令解压就可以
rpm -ivh jdk-8u171-linux-x64.rpm
在这里插入图片描述

2)下载和安装jenkins

①下载Jenkins

wget https://pkg.jenkins.io/redhat/jenkins-2.83‐1.1.noarch.rpm
在这里插入图片描述

②安装Jenkins

rpm -ivh jenkins-2.83-1.1.noarch.rpm

③配置Jenkins

vi /etc/sysconfig/jenkins

修改用户和端口
在这里插入图片描述

④启动服务

systemctl start jenkins

⑤访问192.168.12.128:8888

在这里插入图片描述

[root@pinyoyougou-docker ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
f06c6936956942709609f518e65e75ff

在这里插入图片描述
在这里插入图片描述
这个东西啊,说是安装,一旦网速慢一点,就报错不给安装了,最重要的就是框那2个模块。要是都没了,那就直接进去里面一个个安装吧。。
在这里插入图片描述
自己起,我全是root

然后点进去系统管理,从一大串英文中找到更新Jenkins
在这里插入图片描述
这里原本是问你是否更新Jenkins,现在已经下载完了,点击重启

2、Jenkins插件安装

安装maven插件与git插件

在这里插入图片描述

在这里插入图片描述

搜索
在这里插入图片描述
在Avaliable中搜索maven和git,但是更新Jenkins后其自动安装过了

在这里插入图片描述
在这里插入图片描述

3、 安装maven

上面的安装maven插件时Jenkins插件与maven的整合,而这里我们是要安装maven。
根据IDEA当时的maven版本,下载对应的版本,我是maven 3.6.3。

先在win中下载和解压maven,然后修改其配置

1)maven\conf\settings.xml

在这里插入图片描述
记得以后的仓库是repository中

2)将commom模块打包,并且将repository复制粘贴一遍

直接移动repository不行的,因为我们还有commom模块,这是个自定义的工具类,没有端口没有其他什么的,只能通过本地maven查找,所以将其放入到仓库中

将commom模块打包成war

在这里插入图片描述
打开文件
在这里插入图片描述
留一个父和一个common就行。

3)将maven和repository移动到宿主机中

maven移过来是主要,repository移动过来是为了提高速度
在这里插入图片描述
这样,就把maven和maven的仓库都配置好了

4、全局工具配置

在这里插入图片描述

JDK

在这里插入图片描述

Git

在这里插入图片描述

maven

在这里插入图片描述

5、持续集成

接下来的,就是把jar编程镜像,放在docker中启动。这其实和第二章的一样,只不过事用Jenkins来简单操作,不用每一个都那么麻烦

流程:

1)更新代码,其中包括每一个微服务的pom文件添加

    <build>
<!--        名称-->
        <finalName>app</finalName>
        <plugins>
<!--            如果报错Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3-->
<!--            那么打开仓库repository\org\apache\maven\plugins\maven-site-plugin 查看有哪些版本-->
<!--            然后查看maven的版本号,我的maven是3.6.3,那么maven-site-plugin要高过maven版本?-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.7.1</version>
            </plugin>

<!--            springboot的插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
<!--            docker的maven插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
<!--                配置信息-->
                <configuration>
<!--                    IP地址-->
<!--                    project.artifactId,就是上面的 <artifactId>tensquare_config</artifactId>-->
<!--                    project.version就是  parent里的 <version>1.0-SNAPSHOT</version>  -->
                    <imageName>192.168.12.128:5000/${project.artifactId}:${project.version}</imageName>
<!--                    基础镜像,就是刚才配好的jdk-->
                    <baseImage>jdk1.8</baseImage>
<!--                    cmd命令,打包Java,执行 java -jar 名字.jar-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
<!--                            照抄-->
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
<!--                    刚才设置的2375端口号,可以让所有IP地址都访问宿主机的docker-->
                    <dockerHost>http://192.168.12.128:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

2)利用的config微服务,改变地址

spring:
  cloud:
    config:
      name: eureka
      profile: dev
      #以后改成192.168.12.128,利用docker的config
      uri: http://192.168.12.128:12000

这是因为config也上传到docker中了,我们要用到虚拟机的地址而不是本地地址了

3)上传到git仓库

传统艺能上传仓库

4)上传eureka为例

①创建镜像到docker

http://192.168.12.128:8888/进入Jenkins
在这里插入图片描述在这里插入图片描述
添加账号密码
在这里插入图片描述
在这里插入图片描述
然后中间一大段不用管,看Build
在这里插入图片描述
因为这是网关微服务的,所以要加网关微服务的pom
clean package docker:build -DpushImage
点击保存就可
在这里插入图片描述
启动
在这里插入图片描述
很久之后,成功了
在这里插入图片描述

②然后在Linux虚拟机中创建镜像并且启动

[root@pinyoyougou-docker ~]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED              SIZE
192.168.12.128:5000/tensquare_eureka   1.0-SNAPSHOT        5036fbf60e83        About a minute ago   644MB
192.168.12.128:5000/tensquare_config   1.0-SNAPSHOT        a813bdf41c56        6 weeks ago          626MB
192.168.12.128:5000/jdk1.8             latest              c864261c557a        6 weeks ago          587MB
jdk1.8                                 latest              c864261c557a        6 weeks ago          587MB
elasticsearch                          7.9.3               1ab13f928dc8        3 months ago         742MB
centos/mysql-57-centos7                latest              2e4ddfafaa6f        2 years ago          445MB
gogs/gogs                              latest              2fb3b88053d6        2 years ago          94.2MB
mongo                                  latest              8bf72137439e        2 years ago          380MB
rancher/server                         latest              38d4a75fa8f9        2 years ago          1.08GB
centos                                 7                   5182e96772bf        2 years ago          200MB
redis                                  latest              4e8db158f18d        2 years ago          83.4MB
tomcat                                 7-jre7              fa2c33156fb9        2 years ago          357MB
rabbitmq                               management          df80af9ca0c9        2 years ago          149MB
grafana/grafana                        latest              3e16e05be9a3        2 years ago          245MB
nginx                                  latest              c82521676580        2 years ago          109MB
jenkins                                latest              cd14cecfdb3a        2 years ago          696MB
registry                               latest              b2b03e9146e1        2 years ago          33.3MB
elasticsearch                          5.6.8               6c0bdf761f3b        2 years ago          570MB
google/cadvisor                        latest              75f88e3ec333        3 years ago          62.2MB
mobz/elasticsearch-head                5                   b19a5c98e43b        4 years ago          824MB
tutum/influxdb                         latest              c061e5808198        4 years ago          290MB
[root@pinyoyougou-docker ~]# docker run -di --name=tensquare_eureka -p 6868:6868 192.168.12.128:5000/tensquare_eureka:1.0-SNAPSHOT
0aa0677cd652df357aa8d6aa0273d8edf4cfff2e7e1d6eec74576d45e027b179
[root@pinyoyougou-docker ~]# docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS              PORTS                                                                                                                      NAMES
0aa0677cd652        192.168.12.128:5000/tensquare_eureka:1.0-SNAPSHOT   "java -jar /app.jar"     5 seconds ago       Up 3 seconds        0.0.0.0:6868->6868/tcp                                                                                                     tensquare_eureka
db7a2f60a93f        192.168.12.128:5000/tensquare_config:1.0-SNAPSHOT   "java -jar /app.jar"     6 weeks ago         Up 6 weeks          0.0.0.0:12000->12000/tcp                                                                                                   tensquare_config
97b4dc46f84d        registry                                            "/entrypoint.sh /etc…"   6 weeks ago         Up 6 weeks          0.0.0.0:5000->5000/tcp                                                                                                     tensquare_registry
9f58ad0b83e6        jdk1.8                                              "/bin/bash"              6 weeks ago         Up 6 weeks                                                                                                                                     tensquare_jdk8
151f5d6aeb2b        rabbitmq:management                                 "docker-entrypoint.s…"   2 months ago        Up 6 weeks          0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp   tensquare_rabbitmq
a0472121de86        mobz/elasticsearch-head:5                           "/bin/sh -c 'grunt s…"   2 months ago        Up 6 weeks          0.0.0.0:9100->9100/tcp                                                                                                     tensquare_header
3a15f545748a        elasticsearch:7.9.3                                 "/tini -- /usr/local…"   2 months ago        Up 6 weeks          0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                                                                             tensquare_es
b8b7ee9aab14        mongo                                               "docker-entrypoint.s…"   2 months ago        Up 6 weeks          0.0.0.0:27017->27017/tcp                                                                                                   tensquare_mongo
79abcd03201d        redis                                               "docker-entrypoint.s…"   2 months ago        Up 6 weeks          0.0.0.0:6379->6379/tcp                                                                                                     tensquare_redis
a7e32c78df03        centos/mysql-57-centos7                             "container-entrypoin…"   3 months ago        Up 6 weeks          0.0.0.0:3306->3306/tcp                                                                                                     tensquare_mysql

在这里插入图片描述
妙啊,以后就能在虚拟机中启动了,不用再打开idea了,后端完成,接下来是前端了

记得,把其他的都全部镜像化
并且gitee的yml使用的eruka是本地的,记得改成虚拟机的
在这里插入图片描述

六、番外篇

1、将gitee中的项目私有化

这个gitee中放的是yml文件,,是公开的,但有些yml包括阿里密钥是不可公开的,所以现在改为私有。
在这里插入图片描述
然后对config模块的yml进行修改(因为存的是yml,而spring-cloud-config-server就是专门存放yml的)
在这里插入图片描述
就加两个字段就好啦,usernamepassword,就是gitee的账号和密码

2、原生地把镜像上传到私有仓库registry中

教程是利用maven插件帮我们上传地,但是原生的上传时这样的

#标记
#docker tag 镜像ID registry仓库地址/镜像名称
[root@pinyoyougou-docker ~]# docker tag c864261c557a 192.168.12.128:5000/jdk1.8
#上传
#docker push registry仓库地址/镜像名称
[root@pinyoyougou-docker ~]# docker push 192.168.12.128:5000/jdk1.8
#然后可以通过在虚拟机输入命令来查看仓库有啥
[root@pinyoyougou-docker ~]# curl -X GET http://192.168.12.128:5000/v2/_catalog
{
    
    "repositories":["jdk1.8","tensquare_config"]}

3、删除registry中的镜像

别人都是敲命令的,而我是邪道删除法。。。

[root@pinyoyougou-docker /]# find -name v2
./var/lib/docker/volumes/57ce5d55d6ad428ebe6b925d8a9c38f4c66d22fb1bf0c6b21e7ffe258b21a186/_data/docker/registry/v2

先找到这个仓库在哪里,然后通过xftp手动去删除
在这里插入图片描述
然后点进去
在这里插入图片描述
在这里插入图片描述
这个东西是对应的呢,然后我们就删除要删除的东西
在这里插入图片描述
在这里插入图片描述
然后再删除docker中对应的容器和镜像就可以了,然后再上传我们新的代码

4、记得所有的yml都上传到网上

客户端都要的包

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

每个都要配rabbitMQ和instance

spring: 
  rabbitmq:
    host: 192.168.12.128
    username: guest
    password: guest
    port: 5672
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:6868/eureka/
  instance:
    prefer-ip-address: true #false只允许本地使用,true可以在服务器上使用

还有把7从到到尾看一遍

其他模块全部添加包、yml和主程序类注解@EnableEurekaClient

	  <dependency>
		  <groupId>org.springframework.cloud</groupId>
		  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	  </dependency>

5、Error cloning remote repo ‘origin’

在这里插入图片描述
导出镜像有错误
第一种,删除重做
第二种https://www.imooc.com/qadetail/266542?t=434701

猜你喜欢

转载自blog.csdn.net/yi742891270/article/details/111404747