SpringCloud Alibaba微服务实战十五 - SpringCloud 容器化部署

简介: SpringCloud Alibaba微服务实战十五 - SpringCloud 容器化部署

SpringCloud Alibaba 系列文章已经写了 16 篇了,基本框架大体完成,业务相关的逻辑还需要根据项目本身的业务进行梳理改造。今天将是本系列的最后一篇 - SpringCloud 容器化部署(理论上最后一篇,不排除后面会对相关组件进行升级)

看在写了这么多的份上是不是应该点个在看呢?


开启 Docker 远程访问


由于我是在 windows 上进行开发没有安装 docker,所以需要找一台安装好 docker 的服务器并开启远程访问。使用 mac 的同学请忽略。

  • 打开 docker 配置文件
    vi /lib/systemd/system/docker.service
  • 开放 2376 端口
    找到ExecStart=/usr/bin/dockerd所在行,在后面追加-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock,修改完成的效果如下:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
  • 重启 docker 服务
systemctl daemon-reload
systemctl restart docker.service

docker-maven-plugin 构建 docker 镜像

在开始打包之前一定要先在bomcommon模块执行mvn clean install命令,否则打包不成功。

看过本系列文章的人一定也知道 docker 和 docker-compose 的相关指令了,这里就不再说明。

  • 在需要构建组件的模块引入 docker-maven-plugin 插件
<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>1.2.2</version>
  <configuration>
    <imageName>${project.artifactId}</imageName>
    <imageTags>
      <imageTag>latest</imageTag>
    </imageTags>
    <!--指定Dockerfile路径-->
    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
    <dockerHost>http://xxx.xx.xx.xx:2376</dockerHost>
    <resources>
      <resource>
        <targetPath>/</targetPath>
        <!--${project.basedir}/target-->
        <directory>${project.build.directory}</directory>
        <!--${project.artifactId}-${project.version}-->
        <include>${project.build.finalName}.jar</include>
      </resource>
    </resources>
  </configuration>
</plugin>

这里端口与前面开放的端口保持一致。

  • 在模块的 src/main/docker 目录下建立 Dockerfile 文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD cloud-gateway-1.0.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

每个模块需要自行修改 ADD 指令

  • 在模块下执行如下命令构建 docker 镜像
mvn clean package docker:build -DskipTests

执行效果如下:

  • 构建完成后登陆服务器查看 docker 镜像docker images
  • 启动镜像,带上--rm 指令便于删除容器。
docker run -d -p 5000:5000  --rm auth-service
docker run -d -p 8010:8010  --rm account-service
docker run -d -p 8090:8090  --rm cloud-gateway
  • 查看是否正常启动
  • 使用 postman 进行测试

服务正常响应!


使用 docker-compose 启动


  • 创建 cloud-service.yml 文件编排镜像
version:"3"
services:
  auth-service:
    container_name:auth-service
    image:auth-service:latest
    ports:
      -"5000:5000"
    restart:always
  cloud-gateway:
    container_name:cloud-gateway
    image:cloud-gateway:latest
    ports:
      -"8090:8090"
    restart:always
  account-service:
    container_name:account-service
    image:account-service:latest
    ports:
      -"8010:8010"
    restart:always
  • 将文件上传至服务器,使用如下脚本启动服务
    docker-compose -f cloud-service up
  • 使用 postman 进行测试服务正常响应!

SpringCloud 的容器化部署还是比较简单的,你还不来试一下?


好了,各位朋友们,本期的内容到此就全部结束啦,能看到这里的同学都是优秀的同学,下一个升职加薪的就是你了!

目录
相关文章
|
25天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
15天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
45 5
|
12天前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
26 1
|
23天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
25天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
25天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
25天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
26天前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
26天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
25天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
82 2