这一章大部分都是讲怎么部署上线的。对于这方面,我一点都不懂。。。也不知道教程在干嘛。
走一步算一步吧。
一、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
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的)
就加两个字段就好啦,username
和password
,就是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