千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!原文链接地址:『高级篇』docker之微服务服务docker化(18)这次进入微服务的部署,代码也基本都通过了。如果比做一首歌曲的话,前奏已经
千家信息网最后更新 2026年11月02日『高级篇』docker之微服务服务docker化(18)

原创文章,欢迎转载。转载请注明:转载自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。

  • java镜像

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

  • 下载java镜像

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

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

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

开始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-serviceservice.port=7911#数据源的配置spring.datasource.url=jdbc:mysql://{mysql.address}:3306/db_userspring.datasource.username=rootspring.datasource.password=rootspring.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-8MAINTAINER liming www.idig8.comCOPY target/user-thrift-service-1.0-SNAPSHOT.jar /user-thrift-service.jarENTRYPOINT ["java","-jar","/user-thrift-service.jar"]

执行build生成镜像

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

查看ip地址

ifconfig

生成容器

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

新建立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

编写Dockerfile

FROM python:3.6MAINTAINER liming www.idig8.comRUN pip install thriftENV PYTHONPATH /COPY message /messageENTRYPOINT ["python","/message/message_service.py"]

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

build开发

#!/usr/bin/env bashdocker build -t message-thrift-python-service:latest .

镜像生成容器

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

  • 构建user-edge-service

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

application.properties

server.name=user-edge-serviceserver.port=8082thrift.user.ip=user-thrift-servicethrift.user.port=7911thrift.message.ip=message-thrift-python-servicethrift.message.port=9090#redis configspring.redis.host=${redis.address}spring.redis.port=6379spring.redis.password=limingspring.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-8MAINTAINER liming www.idig8.comCOPY target/user-edge-service-1.0-SNAPSHOT.jar /user-edge-service.jarENTRYPOINT ["java","-jar","/user-edge-service.jar"]

build.sh 编写

#!/usr/bin/env bashmvn packagedocker build -t user-edge-service:latest .

sh build.sh

创建容器

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

  • 构建course-dubbo-service

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

application.properties

#dubbo 配置spring.dubbo.application.name=course-dubbo-servicespring.dubbo.registry.address=zookeeper://${zookeeper.address}:2181spring.dubbo.protocol.name=dubbospring.dubbo.protocol.port=20880#spring.dubbo.protocol.host=127.0.0.1spring.dubbo.scan=com.idig8.course#数据源的配置spring.datasource.url=jdbc:mysql://${mysql.address}:3306/db_coursespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driverthrift.user.ip=user-thrift-servicethrift.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-8MAINTAINER liming www.idig8.comCOPY target/course-dubbo-service-1.0-SNAPSHOT.jar /course-dubbo-service.jarENTRYPOINT ["java","-jar","/course-dubbo-service.jar"]

build.sh 编写

#!/usr/bin/env bashmvn packagedocker build -t course-dubbo-service:latest .
sh build.sh

创建容器

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

  • 构建course-edge-service

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

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

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

docker run -it gataway-zuul:latest                                         

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

服务 文件 镜像 方式 运行 配置 开发 地址 容器 环境 数据 准备 通信 之间 可以通过 情况 源码 搜索 生成 仓库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 中关村互联网 科技集团 高科技互联网 深圳恒合互联网络科技有限公司 迪茉互联网科技 华中科技大学互联网 银优互联网科技有限公司 山东吉时兔互联网科技有限公司 青海省互联网新科技 互联网科技公司的市场部门 新华互联网科技2019 速维有品互联网信息科技(苏州)有限公司 佛山市拉法互联网科技有限公司 科技赋能视角下互联网保险发展 工业互联网山东科技大学 互联网企业科技类企业如何做账 广州智享互联网科技 第三届互联网大会安防黑科技 山东蛋芒互联网科技有限公司 互联网金融金融科技 圆梦互联网科技 互联网公司 科技公司 唐信互联网科技 大连 科技互联网创业计划书 济南和联互联网科技有限公司 天速互联网络科技有限公司 互联网教育科技公司vipkid 威龙国际互联网科技公司 云鲸互联网络科技有限公司 互联网科技和医药行业
0