二十九、Docker(5)-创新互联

🌻🌻 目录
  • 一、Maven Docker 插件构建 Docker 镜像
    • 1.1 maven Docker 插件构建 Docker 镜像入门
    • 1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile
    • 1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库
  • 二、手动发布部署微服务项目到 Docker
    • 2.1 项目工程发布镜像规划
    • 2.2 项目工程发布镜像配置
      • 2.2.1 项目 EurekaServer01
      • 2.2.2 创建docker网络
      • 2.2.3 项目 ConfigServer001
      • 2.2.4 数据库的创建
      • 2.2.5 项目ZuulGateWay
      • 2.2.6 项目UserProvdier01
      • 2.2.7 项目 UserWeb06
    • 2.3 编译工程创建镜像(对上面的总结)
    • 2.4 搭建实际运行项目

创新互联于2013年创立,先为德兴等服务建站,德兴等地企业,进行企业商务咨询服务。为德兴企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。一、Maven Docker 插件构建 Docker 镜像

首先:启动上节使用的两台服务器(启动docker和启动游戏)

在这里插入图片描述

然后:导入上一节的springcloud案例项目 a-parent-project

开始这节的总结啦啦啦~~~

Maven是一个强大的项目管理与构建工具。可以使用Maven构建Docker镜像,那么我们的工作能得到进一步的简化。

1.1 maven Docker 插件构建 Docker 镜像入门

第一步:修改项目EurekaServer01pom.xml

com.spotifydocker-maven-plugin0.4.13zql/microservice-discovery-eureka:0.0.1java:8["java", "-jar", "/${project.build.finalName}.jar"]  / ${project.build.directory} ${project.build.finalName}.jar 

在这里插入图片描述

也可以下载 插件地址

第二步:在linux宿主机的/usr/local下面创建java-project,并且把项目文件(如下图,父项目下的所有)上传到linux宿主机目录/usr/local/java-project,如下:

步骤一:

在这里插入图片描述

步骤二:项目路径查看:

在这里插入图片描述

步骤三:

在这里插入图片描述

步骤四:

在这里插入图片描述

第三步:下载并上传 jdk、maven 的安装包到linux服务器

  • jdk-8u131-linux-x64.tar.gz
  • apache-maven-3.6.0-bin.tar.gz

在这里插入图片描述

解压并重命名:

在这里插入图片描述

第四步:安装jdk

tar xvf jdk-8u131-linux-x64.tar.gz  -C /usr/local/
cd /usr/local
mv jdk1.8.0_131  jdk
vi /etc/profile

在这里插入图片描述

#在最后添加
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH


#重新加载配置文件
source /etc/profile

#测试jdk是否安装成
java -version

在这里插入图片描述

在这里插入图片描述

第五步:安装maven

tar xvf apache-maven-3.6.0-bin.tar.gz  -C /usr/local/
cd /usr/local
mv apache-maven-3.6.0 maven
vi /etc/profile
#在最后添加
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
#重新加载配置文件
source /etc/profile
#测试maven安装
mvn -v

解压缩:
在这里插入图片描述

解压并重命名:

在这里插入图片描述

拷贝maven目录,方便下面使用:

在这里插入图片描述

添加配置文件和验证是否成功安装

在这里插入图片描述

配置maven加速器,我使用了华为的

在这里插入图片描述

编辑配置加速器

在这里插入图片描述

huaweicloud*https://mirrors.huaweicloud.com/repository/maven/  

然后刷新项目

在这里插入图片描述

第六步:编译构建项目
切换到测试JAVA项目目录

cd /usr/local/EurekaServer

在这里插入图片描述

执行编译指令:

mvn clean package docker:build   #这个命令不行就执行下面一个,都一样
mvn clean -Dmaven.test.skip=true package docker:build  

在这里插入图片描述

我们会发现终端输出类似于如下的内容:

在这里插入图片描述

第七步:查看镜像
执行命令:

docker images

在这里插入图片描述

第八步:使用镜像创建运行容器

docker run -di --name e1 -p 10086:10086 zql/microservice-discovery-eureka:0.0.1

在这里插入图片描述

查看日志

docker logs e1

在这里插入图片描述

第九步:访问测试http://192.168.188.181:10086/

在这里插入图片描述

1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile

上面的示例,我们直接在pom.xml中设置了一些构建的参数。很多场景下,我们希望使用Dockerfile更精确、有可读性地构建镜像。

下面我们带领大家看一下如何使用Dockerfile基于Maven插件构建镜像。

第一步:首先我们在项目的src/main/docker目录下,新建一个Dockerfile文件

在idea中新建文件,文件出现问号,打不开解决

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD EurekaServer01-1.0.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
# 配置容器启动后执行的命令
CMD ["java","-jar","/app.jar"]

在这里插入图片描述

第二步:修改pom.xml,修改maven Docker插件,变动地方看下截图

org.springframework.bootspring-boot-maven-plugincom.spotifydocker-maven-plugin0.4.13  zql/microservice-discovery-eureka:0.0.1 ${project.basedir}/src/main/docker       / ${project.build.directory} ${project.build.finalName}.jar  

在这里插入图片描述

删除之前构建的一些容器和镜像

在这里插入图片描述

第三步:上传到linux服务器重新执行编译构建,即可根据Dockerfile生成镜像

在这里插入图片描述

切换到测试JAVA项目目录

cd /usr/local/EurekaServer01

执行编译构建指令:

mvn clean package docker:build  #这个命令不行就执行下面一个,都一样
mvn clean -Dmaven.test.skip=true package docker:build

构建出现问题解决

在这里插入图片描述

浏览器进一步验证:http://192.168.188.181:10086/

在这里插入图片描述

1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库

前文我们使用docker push 命令实现了镜像的推送,我们也可使用Maven插件推送镜像。我们不妨使用Maven插件推送一个Docker镜像到Docker 私有仓库。

第一步:修改Maven的全局配置文件setttings.xml

  • 在其中添加以下内容,配置Docker私有仓库的用户信息。
cd /usr/local/maven/conf/

vi settings.xml

在这里插入图片描述

docker-hubadminadmin123wmsspark@163.com

在这里插入图片描述

第二步:修改项目EurekaServer01的pom.xml

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.181:8086/microservice-discovery-eureka:0.0.2		${project.basedir}/src/main/docker		/${project.build.directory}${project.build.finalName}.jar		docker-hub	

在这里插入图片描述

serverId:必须和maven配置文件设置的server 节点的id一致

  • idea中做了更改后再次需要上传

在这里插入图片描述

第三步:执行以下命令,添加pushImage的标识,表示推送镜像

  • 先将上面构建的容器和镜像都删掉

在这里插入图片描述

mvn clean -DpushImage package docker:build   #这个命令不行就执行下面一个,都一样

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在这里插入图片描述

这里已经显示推送成功了,继续下面游戏验证:

在这里插入图片描述

执行完毕,查看Docker游戏已经上传成功镜像:http://192.168.188.182:8081/

在这里插入图片描述

二、手动发布部署微服务项目到 Docker 2.1 项目工程发布镜像规划

按照项目EurekaServer01的配置方式把相关项目都发布成镜像

序号项目名称镜像名称
1EurekaServer01192.168.188.138:8086/microservice-discovery-eureka:0.0.1
2ConfigServer001192.168.188.138:8086/microservice-config-server:0.0.1
3ZuulGateWay192.168.188.138:8086/microservice-zuul-gateway:0.0.1
4UserProvdier01192.168.188.138:8086/microservice-provdier-service:0.0.1
5UserWeb04192.168.188.138:8086/microservice-user-web:0.0.1

注意:

  • 因为EurekaServer01EurekaServer02只是端口和配置不同,没必要单独创建2个独立镜像,仅仅需要在Docker镜像创建容器的时候传递相关参数即可。
  • 同理ConfigServer001ConfigServer002也公用一个镜像。
  • UserProvdier01UserProvdier02也公用一个镜像。
  • 先打开idea修改如下操作:

在这里插入图片描述

2.2 项目工程发布镜像配置 2.2.1 项目 EurekaServer01

步骤一、修改上面项目src/main下面创建的docker目录下面的Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD EurekaServer01-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
#CMD ["java","-jar","/app.jar"]

在这里插入图片描述

  • 而后删除上面操作过的镜像

在这里插入图片描述

2.2.2 创建docker网络

先创建一个网络

docker network create mynet    #搭建一个网络
docker network ls			   #查看网络

在这里插入图片描述

  • 因为上面配置做了修改,所以再次上传

在这里插入图片描述

mvn clean package -DpushImage docker:build

在这里插入图片描述

分别构建Eureka1和Eureka2

docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
 
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1

docker logs eureka1     #通过日志查看是否启动
docker logs eureka2  

在这里插入图片描述

在这里插入图片描述
命令详细解释如:

容器创建指令:
docker run                           #创建容器指令
-di                                  # d守护式容器、i 运行容器
--name=eureka1                       # 容器名称
--network=mynet                      #容器加入用户自定义网络mynet
-e PORT="-Dserver.port=10086"        #指定环境参数--Eureka注册中心服务启动监听端口
                                     #指定环境参数--Eureka注册中心地址(高可用架构)
-e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" 
-p 10086:10086                        #容器端口号映射
192.168.188.138:8086/microservice-discovery-eureka:0.0.1   #镜像名称

浏览器验证:http://192.168.188.181:10086/

在这里插入图片描述

http://192.168.188.181:10087/

在这里插入图片描述

2.2.3 项目 ConfigServer001

步骤一、拷贝EurekaServer01目录下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY ConfigServer001-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

在这里插入图片描述

步骤二、修改pom.xml,修改maven Docker插件(将上面EurekaServer01的相应plugin复制过来修改下面截图小框就可以了

com.spotifydocker-maven-plugin0.4.13192.168.188.182:8086/zql/microservice-config-server:0.0.1${project.basedir}/src/main/docker/${project.build.directory}${project.build.finalName}.jardocker-hub

在这里插入图片描述

步骤三:进而上传到服务器即可

在这里插入图片描述

步骤四:执行下列命令上传到游戏

mvn clean package -DpushImage docker:build

在这里插入图片描述

docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在这里插入图片描述

  • 将来自己上传github上的文件进行拉取:

在这里插入图片描述

浏览器输入:http://192.168.188.181:7001/application.yml

  • 再创建一个容器
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在这里插入图片描述

浏览器查看:http://192.168.188.181:10086/至此一共创建了5个容器 7001重复了啊,不然就4个

在这里插入图片描述

再试试7002是否能拉取github项目http://192.168.188.181:7002/application.yml

2.2.4 数据库的创建
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7

在这里插入图片描述

验证:

在这里插入图片描述

在这里插入图片描述

2.2.5 项目ZuulGateWay

步骤一、拷贝EurekaServer01目录下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY ZuulGateWay-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

在这里插入图片描述

步骤二、修改pom.xml,修改maven Docker插件

org.springframework.bootspring-boot-maven-plugincom.spotifydocker-maven-plugin0.4.13 192.168.188.182:8086/zql/microservice-zuul-gateway:0.0.1 ${project.basedir}/src/main/docker   / ${project.build.directory} ${project.build.finalName}.jar   docker-hub

在这里插入图片描述

步骤三:上传项目服务器

在这里插入图片描述

步骤四:上传推送到游戏

mvn clean -DpushImage package docker:build   #这个命令不行就执行下面一个,都一样

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在这里插入图片描述

步骤五:验证项目

2.2.6 项目UserProvdier01

步骤一、在项目根目录创建docker目录,创建Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY UserProvdier01-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#监听端口
ENV PORT=""
#应用名称,用来前端显示用,不是serviceId
ENV APPLICATION=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

步骤二、修改pom.xml,修改maven Docker插件

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.138:8086/microservice-provdier-service:0.0.1		${project.basedir}/docker		/${project.build.directory}${project.build.finalName}.jar		docker-hub	

步骤三、bootstrap.yml配置文件内容

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master

步骤四、项目在git存储的配置文件

ProviderVersion: UserProvider0.0.1
spring:
  datasource:
    url: jdbc:mysql://db1:3306/springboot-005?serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  application:
    name: UserProvider
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,info

注意:配置文件级别 本地配置文件—》-D参数注入配置文件----》远程配置中心配置文件,级别越来越高。

2.2.7 项目 UserWeb06

步骤一、拷贝EurekaServer01目录下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY UserWeb06-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#监听端口
ENV PORT=""
#应用名称
ENV APPLICATION=""
#注册中心服务器地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

在这里插入图片描述

步骤二、修改pom.xml,修改maven Docker插件

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.182:8086/microservice-user-web:0.0.1		${project.basedir}/docker		/${project.build.directory}${project.build.finalName}.jar		 docker-hub	

步骤三、bootstrap.yml配置文件内容

spring:
  application:
    name: UserWeb06
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master
2.3 编译工程创建镜像(对上面的总结)

步骤一、上传项目EurekaServer01到Linux服务器目录:/usr/local/springboot/EurekaServer01

步骤二、执行编译、打包、构建docker镜像指令
进入当前项目目录

cd  /usr/local/springboot/EurekaServer01

编译、打包、发布Docker镜像指令:

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在这里插入图片描述

查看镜像:

docker images

在这里插入图片描述

步骤三、其他项目
其他项目ConfigServer001、ZuulGateWay、UserProvdier01、UserWeb06也和上面一样,上传,然后进入项目目录执行编译、打包、构建Docker镜像指令。

最终5个镜像全部创建ok

在这里插入图片描述

在私有仓库可以查看到镜像

在这里插入图片描述

上面命令汇总:

#搭建网络
docker network create mynet
#查看网络
docker network ls
 
#创建eurka01镜像
mvn clean package -DpushImage docker:build
 
docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
 
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1

 
#创建ConfigServer001镜像
mvn clean package -DpushImage docker:build
 
docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1
 
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1
 
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7  
  
docker run -di --name=provider1 --network=mynet -e PORT="-Dserver.port=8001" -e APPLICATION="-Dspring.application.name=UserProvdier01" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8001:8001  192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
  
docker run -di --name=provider2 --network=mynet -e PORT="-Dserver.port=8002" -e APPLICATION="-Dspring.application.name=UserProvdier02" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8002:8002  192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
2.4 搭建实际运行项目

一:项目架构图

在这里插入图片描述

二:创建docker网络

根据上面的架构图,本次需要创建一个用户自定义网络(上面已经创建过了):
Docker指令:

docker network create mynet

查看docker网络指令:

docker network ls

在这里插入图片描述

构建网络成功后,所有加入到该用户自定义网络的容器即可通过容器名称相互连接。

步骤三:创建运行docker容器

步骤四:查看docker容器输出日志

通过指令:

docker logs -f -t --tail 10 provider1

就可以查看对应的容器日志输出

步骤五:测试运行

访问:http://192.168.188.138:9001

在这里插入图片描述

docker至此总结完毕✌✌✌

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享题目:二十九、Docker(5)-创新互联
当前网址:http://pwwzsj.com/article/hgsjc.html