我的微服务构建之旅,是什么让我爱上了 Docker?

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 以前,我们曾经在 Ubuntu 上运行所有的生产服务器,后来我们决定将所有的生产设置迁移到 CentOs 环境中。由于我们要在不同的操作系统上执行它,因此我们不得不再次重新安装所有的依赖项,这无疑是一件非常痛苦的事情。

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散!


在之前的文章中,我们对容器与虚拟机进行了足够的讨论。所以,今天我想跟大家谈谈关于容器以及如何将其应用到如今的行业中来。以前,我们曾经在 Ubuntu 上运行所有的生产服务器,后来我们决定将所有的生产设置迁移到 CentOs 环境中。由于我们要在不同的操作系统上执行它,因此我们不得不再次重新安装所有的依赖项,这无疑是一件非常痛苦的事情。为了克服所有关于可移植性问题的挑战,我们决定使用 Docker。


screenshot

除了基础操作系统之外,我们还必须安装像 Docker 这样的容器引擎。对于整个设置,我们只需要有一个名为 Dockerfile 的预配置文件,它帮助我们将每个应用程序作为一个单独的 VM (被称为容器)运行在容器引擎(Docker)之上。它可以帮助我们在任何平台上运行这些容器,不会有任何额外的手动操作。


将 Spring Boot 应用程序封装在 Docker 容器中

我们目前正在开发一款名为“Panna”的在线视频采访平台。由于它是一个端到端的平台,所以它有不同的服务。因此,我们决定将它所包含的服务全部分解为微服务(MicroServices),让其独立于其他服务,以便后期维护和扩展。下面,让我来讲解下我们是如何将组件进行封装的。

screenshot

如上图所示,Dockerfile 文件将告诉 docker 应该如何构建我们的镜像。接下来让我们详细讲解每条命令:

  • FROM 235746/centos-java: 这是我们自定义构建的 docker 镜像,它由 CentOs OS 和 java 组成。
  • RUN mkdir /opt/resume-application:它创建了一个文件夹来复制其中的文件。
  • COPY resume-snapshot-0.0.1.jar /opt/resume-application/: 它将文件从 build 目录复制到指定路径。
  • WORKDIR /opt/resume-application/: 它将我们当前的目录更改为指定路径。
  • EXPOSE 9090:这条命令是告诉 Docker 在启动基于该镜像的容器时公开9090端口。
  • ENTRYPOINT [ “sh”, “-c”, “java -Dspring.profiles.active=production resume-snapshot-0.0.1.jar” ]:每当容器启动时,它都会启动我们的应用程序。

一旦我们完成了 Dockerfile 文件,那么就可以将它上传到 DockerHub 或其他任意的 docker 镜像仓库中。由于我们一直在使用 DockerHub,所以让我们开始构建并将 Dockerfile 文件上传至 DockerHub 吧!

docker build -t

上面的命令用于构建我们的 Dockerfile 文件。 让我们创建一个标签并将其推送到 docker 镜像仓库。

docker login

docker tagdocker-id/repo:tagname

docker push docker-id/repo:tagname

现在,可以将其下载到任何地方,并通过将其暴露给端口80或443来运行它。

docker run -p 80:9090 docker-id/repo:tagname

您可以通过运行此容器的服务器 IP 地址来访问您的应用程序。我希望这可以帮助您构建自己的 Dockerfile 文件。

http://hostname

总 结

Docker 简化了大部分管理工作,并使流程变得更加清晰、明朗。它有助于我们维护不同版本的软件,同时方便我们将应用构建、交付到生产环境中。

相关文章
|
3月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1635 10
|
3月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
337 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
3月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
350 100
|
3月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
281 99
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
3月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
2月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
8月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1606 32
|
3月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
182 8
|
8月前
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
412 85

热门文章

最新文章