『高级篇』docker之微服务服务docker化(18)
admin
2023-04-08 13:03:40
0

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之微服务服务docker化(18)

这次进入微服务的部署,代码也基本都通过了。如果比做一首歌曲的话,前奏已经结束,现在开始我们的高潮部分,如果吧我们的服务使用docker,使用服务编排工具,把项目给部署运行起来。源码:https://github.com/limingios/msA-docker

注意

因docker话都是在linux环境,为了方便编写dockerfile文件,我切换到mac本上进行演示,目的只有一个方便开发sh。方便使用。CICD学习实践首选电脑还是mac。

微服务部署

  1. 服务docker化,可以在docker下运行。
  2. Docker仓库创建,docker创建的镜像push到仓库里面。
  3. 构建高可用的集群环境,Mesos,Swarm,kubernetes。运行这3个服务编排工具把我们的服务运行和编排起来。可以优雅的启动,停止,扩充容,故障的恢复。

docker化

服务有个适合的环境,服务可以运行起来,给他准备一个环境,比如服务是个种子,我们需要准备一片土地,服务是一条鱼,就需要准备一片大海。源码中的服务有一个是python写的,有一个是java写的,也就是需要2个运行环境,一个基于java,一个基于python。

『高级篇』docker之微服务服务docker化(18)

  • java镜像

    去hub.docker.com 搜索java,找到tag

『高级篇』docker之微服务服务docker化(18)

  • 下载java镜像

    先配置加速,https://www.daocloud.io/mirror

 docker pull java:openjdk-8
 docker images|grep jdk

『高级篇』docker之微服务服务docker化(18)

『高级篇』docker之微服务服务docker化(18)

  • 安装jdk容器
    docker run -it --entrypoint bash java:openjdk-8
    java -version

『高级篇』docker之微服务服务docker化(18)

『高级篇』docker之微服务服务docker化(18)

开始dockerfile的开发

熟悉docker的老铁应该都知道,如果要编译docker的话需要docker化,首选需要开发dockerfile文件。

  • 准备工作

    文件中不能有写死的情况,如果写死了,每次服务的变更都需要变更镜像。为了减少构建镜像的过程,尽量吧数据库的访问地址,经常会发生变化的东西,需要踢出去,不要在配置文件中配置死,针对数据库的访问,不能地址直接写死,mysql的地址,当服务运行在docker之后,他的ip是实时都在变化的,不能写死在镜像里,直接就找不到了就报错了。还有个问题,我们的服务以什么样的形式放在我们docker里面,springboot之所以说适用于微服务,他有个很大的好处,它可以将咱们的服务构建成一个fat jar,只有一个jar包,然后通过java的一个命令:java -jar 文件.jar 运行起来,这种方式对于微服务来说也是很友好的,也非常的简单,就使用这种方式来做。变量的方式就可以通过springboot --mysql.address 就可以传递进来了。

  • 构建user-thrift-service

    修改配置文件 和 pom.xml文件

application.properties

service.name=user-thrift-service
service.port=7911

#数据源的配置
spring.datasource.url=jdbc:mysql://{mysql.address}:3306/db_user
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

pom.xml



    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.3.RELEASE
    
    4.0.0

    com.idig8
    user-thrift-service
    1.0-SNAPSHOT

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.apache.thrift
            libthrift
            0.10.0
        
        
            com.idig8
            user-thrift-service-api
            1.0-SNAPSHOT
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        

        
            mysql
            mysql-connector-java
            5.1.44
        

    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    

Dockfile编写

FROM java:openjdk-8
MAINTAINER liming www.idig8.com

COPY target/user-thrift-service-1.0-SNAPSHOT.jar /user-thrift-service.jar

ENTRYPOINT ["java","-jar","/user-thrift-service.jar"]

『高级篇』docker之微服务服务docker化(18)

执行build生成镜像

docker build -t user-thrift-service:latest .

『高级篇』docker之微服务服务docker化(18)

查看ip地址

ifconfig

『高级篇』docker之微服务服务docker化(18)

生成容器

docker run -it user-thrift-service:latest --mysql.address=192.168.1.140

『高级篇』docker之微服务服务docker化(18)

新建立build.sh


#!/usr/bin/env bash

mvn package
docker build -t user-thrift-service:latest .


![](https://upload-images.jianshu.io/upload_images/11223715-966e41457da6513c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

* 构建message-thrift-python-service
>后面很多的服务,都依赖它,必须把它做好。它是一个python的服务,我们需要找一个python的镜像。去官方找吧

``` bash
 docker pull python:3.6
 docker images|grep python

『高级篇』docker之微服务服务docker化(18)

编写Dockerfile

FROM python:3.6
MAINTAINER liming www.idig8.com

RUN pip install thrift

ENV PYTHONPATH /
COPY message /message
ENTRYPOINT ["python","/message/message_service.py"]

『高级篇』docker之微服务服务docker化(18)

 docker build -t message-thrift-python-service:latest .

『高级篇』docker之微服务服务docker化(18)

build开发

#!/usr/bin/env bash

docker build -t message-thrift-python-service:latest .

『高级篇』docker之微服务服务docker化(18)

镜像生成容器

docker run -it message-thrift-python-service:latest

『高级篇』docker之微服务服务docker化(18)

  • 构建user-edge-service

    微服务的依赖,了解docker的老铁应该知道可以通过link的方式,去根据名字搜索到这个服务,只要不在开发范围内的,认为是通过另外的介入方式ip,域名的方式。通过docker分为2种情况,微服务和微服务之间的通信,微服务和外围系统的通信。
    修改配置文件 和 pom.xml文件

application.properties

server.name=user-edge-service
server.port=8082

thrift.user.ip=user-thrift-service
thrift.user.port=7911

thrift.message.ip=message-thrift-python-service
thrift.message.port=9090

#redis config
spring.redis.host=${redis.address}
spring.redis.port=6379
spring.redis.password=liming
spring.redis.timeout=30000

pom.xml



    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.3.RELEASE
    
    4.0.0

    com.idig8
    user-edge-service
    1.0-SNAPSHOT

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.apache.thrift
            libthrift
            0.10.0
        
        
            com.idig8
            user-thrift-service-api
            1.0-SNAPSHOT
        

        
            com.idig8
            message-thrift-service-api
            1.0-SNAPSHOT
        

        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
            commons-lang
            commons-lang
            2.6
        

        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    

Dockerfile编写

FROM java:openjdk-8
MAINTAINER liming www.idig8.com

COPY target/user-edge-service-1.0-SNAPSHOT.jar /user-edge-service.jar

ENTRYPOINT ["java","-jar","/user-edge-service.jar"]

『高级篇』docker之微服务服务docker化(18)

build.sh 编写

#!/usr/bin/env bash

mvn package
docker build -t user-edge-service:latest .

『高级篇』docker之微服务服务docker化(18)

sh build.sh

『高级篇』docker之微服务服务docker化(18)

『高级篇』docker之微服务服务docker化(18)

创建容器

docker run -it user-edge-service:latest --redis.address=192.168.1.140

『高级篇』docker之微服务服务docker化(18)

  • 构建course-dubbo-service

微服务的依赖,了解docker的老铁应该知道可以通过link的方式,去根据名字搜索到这个服务,只要不在开发范围内的,认为是通过另外的介入方式ip,域名的方式。通过docker分为2种情况,微服务和微服务之间的通信,微服务和外围系统的通信。
修改配置文件 和 pom.xml文件

application.properties

#dubbo 配置
spring.dubbo.application.name=course-dubbo-service
spring.dubbo.registry.address=zookeeper://${zookeeper.address}:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
#spring.dubbo.protocol.host=127.0.0.1
spring.dubbo.scan=com.idig8.course

#数据源的配置
spring.datasource.url=jdbc:mysql://${mysql.address}:3306/db_course
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

thrift.user.ip=user-thrift-service
thrift.user.port=7911

pom.xml



    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.3.RELEASE
    
    4.0.0

    com.idig8
    course-dubbo-service
    1.0-SNAPSHOT

    
        
            io.dubbo.springboot
            spring-boot-starter-dubbo
            1.0.0
        
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.apache.thrift
            libthrift
            0.10.0
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        

        
            mysql
            mysql-connector-java
            5.1.44
        
        
            com.idig8
            course-dubbo-service-api
            1.0-SNAPSHOT
        

        
            com.idig8
            user-thrift-service
            1.0-SNAPSHOT
        
        
            com.idig8
            user-thrift-service-api
            1.0-SNAPSHOT
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    

Dockerfile编写

FROM java:openjdk-8
MAINTAINER liming www.idig8.com

COPY target/course-dubbo-service-1.0-SNAPSHOT.jar /course-dubbo-service.jar

ENTRYPOINT ["java","-jar","/course-dubbo-service.jar"]

『高级篇』docker之微服务服务docker化(18)

build.sh 编写

#!/usr/bin/env bash

mvn package
docker build -t course-dubbo-service:latest .
sh build.sh

『高级篇』docker之微服务服务docker化(18)

『高级篇』docker之微服务服务docker化(18)

创建容器

docker run -it course-dubbo-service:latest --redis.address=192.168.1.140 --zookeeper.address=192.168.1.140

『高级篇』docker之微服务服务docker化(18)

  • 构建course-edge-service

    跟之间的基本是一样的,都是重复的工作。直接看源码吧

    1. 修改pom文件增加maven构建
    2. 增加dockerfile文件
    3. 增加build.sh文件
    4. 资源文件的修改

『高级篇』docker之微服务服务docker化(18)

docker run -it course-edge-service:latest --zookeeper.address=192.168.1.140

『高级篇』docker之微服务服务docker化(18)

『高级篇』docker之微服务服务docker化(18)

docker run -it gataway-zuul:latest                                         

『高级篇』docker之微服务服务docker化(18)

PS:把所有单独的服务,做成了镜像,下次想个办法服务和镜像统一的运行起来。

『高级篇』docker之微服务服务docker化(18)

相关内容

热门资讯

终于明白“博雅红河棋牌有没有挂... 终于明白“博雅红河棋牌有没有挂?”(太坑了原来有挂)您好,博雅红河棋牌这个游戏其实有挂的,确实是有挂...
今日重磅消息“泸州大贰到底有挂... 网上科普关于“泸州大贰有没有挂”话题很是火热,小编也是针对泸州大贰作*弊开挂的方法以及开挂对应的知识...
重磅消息“衢州都莱究竟有挂吗?... 重磅消息“衢州都莱究竟有挂吗?”(外卦神器下载)您好,衢州都莱这个游戏其实有挂的,确实是有挂的,需要...
【第一消息】“双辽麻将有挂吗?... 网上科普关于“双辽麻将有没有挂”话题很是火热,小编也是针对双辽麻将作*弊开挂的方法以及开挂对应的知识...
我来教教您“悠悠系列怎么装挂?... 网上科普关于“悠悠系列有没有挂”话题很是火热,小编也是针对悠悠系列作*弊开挂的方法以及开挂对应的知识...
【第一资讯】“快乐打筒子怎么装... 您好:快乐打筒子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
【第一财经】“皇豪互娱拼三张辅... 您好:皇豪互娱拼三张这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这...
我来教教您“白金岛跑胡子有没有... 您好:白金岛跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
今日重大通报“鱼虾蟹控制器到底... 网上科普关于“鱼虾蟹控制器有没有挂”话题很是火热,小编也是针对鱼虾蟹控制器作*弊开挂的方法以及开挂对...
阿盟:以色列承认索马里兰无效且... 新华社开罗12月28日电 (记者徐皓夫)阿拉伯国家联盟理事会28日在开罗召开紧急会议,强烈谴责以色列...