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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 以前,我们曾经在 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月前
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
174 2
|
2月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
281 75
|
2月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
148 24
|
2月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
202 6
|
3月前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
2月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
83 9
|
3月前
|
机器学习/深度学习 运维 监控
动态服务管理平台:构建高效、灵活的微服务架构基石
动态服务管理平台:构建高效、灵活的微服务架构基石
92 17
|
2月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
207 5
|
2月前
|
监控 安全 持续交付
构建高效微服务架构:策略与实践####
在数字化转型的浪潮中,微服务架构凭借其高度解耦、灵活扩展和易于维护的特点,成为现代企业应用开发的首选。本文深入探讨了构建高效微服务架构的关键策略与实战经验,从服务拆分的艺术到通信机制的选择,再到容器化部署与持续集成/持续部署(CI/CD)的实践,旨在为开发者提供一套全面的微服务设计与实现指南。通过具体案例分析,揭示如何避免常见陷阱,优化系统性能,确保系统的高可用性与可扩展性,助力企业在复杂多变的市场环境中保持竞争力。 ####
61 2
|
2月前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####