面向WEB开发的Docker(一)

简介: Docker的优势很容易让Web开发人员所忽略。对于开发运维来说,它被认为太过技术性、没有必要。术语可能难以理解。教程从来没有解释如何在开发过程中使用Docker。在这里带大家一起来感受Docker在WEB开发中应用。

Docker的优势很容易让Web开发人员所忽略。对于开发运维来说,它被认为太过技术性、没有必要。术语可能难以理解。教程从来没有解释如何在开发过程中使用Docker。在这里带大家一起来感受Docker在WEB开发中应用。


我们先来看看WEB开发过程中可能涉及的技术

  • HTML内容和模板
  • CSS样式表和预处理器,例如Sass
  • 前端JavaScript,包括诸如ReactVue.jsSvelte之类的框架
  • 构建工具,例如bundlersminifiersetc
  • Web服务器,例如NGINXApache
  • 服务器端和框架,包括Node.jsPHPPythonRuby.NET等。
  • 数据库,例如MySQLMariaDBSQL ServerMongoDB
  • 其他用于缓存、消息队列、电子邮件、过程监视等的服务。
  • Git和Github用于源代码控制
  • 管理好这些可能是一个不小的挑战。

在开发过程如果要安装配置好以上环境,至少得几个小时!

1.1、“它可以在我的机器上运行,伙计”

想象一下你最近的应用程序非常成功。你不得不雇佣另一个开发者来给你更多的时间来赚钱。

它们出现在第一天的工作中,克隆你的代码库,启动代码,然后砰的一声,它失败了,出现一条模糊的错误消息。

调试可能会有所帮助,但是你的环境并不相同…

  • 你使用Mac,他们使用Windows
  • 你是使用Node.js v10开发的应用程序,已安装v14
  • 你使用的是MongoDB v3.6,它们在v4.2上

差异加剧。

也许可以在几个小时内解决这些问题,但是…

  • 能否使每个依赖项保持同步?
  • 随着团队和设备数量的增长,这可行吗?
  • 这些依赖关系在所有开发OS和生产服务器上是否可用?

一些公司会实施锁定的设备策略,在这种情况下,将无法使用最新或最合适的工具。这是你可能想到虚拟机?

1.2、虚拟机

该应用程序可以在虚拟机(VM)内运行,而不是限制设备和软件。VM允许将操作系统安装在仿真的硬件环境中。从本质上讲,它是在你的PC上运行的PC。

跨平台VM选项包括VMwareVirtualBoxParallels Desktop。从理论上讲,可以使用你的应用程序及其所有依赖项来创建Linux(或其他)VM。VM只是数据:可以将其复制并在任何实际的Windows,macOS或Linux设备上运行。每个开发人员以及实时服务器都可以运行相同的环境。

不幸的是,虚拟机很快变得不切实际:

  • VM磁盘映像很大,难以复制
  • 单个VM可以自动更新,也可以由单个开发人员更新,因此与其他VM不同步
  • 一个VM需要大量的计算资源:它是一个完整的OS,在另一个OS内的仿真硬件上运行。

1.3、Docker交付

Docker解决了所有这些问题,甚至更多。无需在PC上安装依赖项,而可以在轻量,孤立的类似于VM的环境(称为容器)中运行它们。

在单个命令中,可以下载,配置和运行所需的服务或平台的任意组合。是的,只有一个命令。(诚然,这可能是一个非常复杂的命令,但这就是我们的目的!)

开发益处包括:

  • 所有开发人员都可以在Mac,Linux和Windows上使用相同的Docker容器
  • 应用程序的安装,配置,维护和测试变得更加容易
  • 应用程序在与开发PC隔离的虚拟环境中运行
  • 可以在同一台PC上同时使用同一应用程序或运行时的多个版本,例如PHP 5.6、7.0、7.4等。
  • 开发人员保留了本地开发的所有优势,可以毫无风险地进行试验。

类似的Docker环境也可以部署在生产环境中:

  • 可以简化持续集成和交付过程,以实现快速部署
  • 使用水平缩放可以改善性能。可以添加更多应用程序容器来应对增加的流量。
  • 服务更强大。如果容器发生故障,则可以在零停机时间内自动重新启动。
  • 可以保护应用程序。可以将容器配置为仅彼此通信,而不与外界通信。可以将MySQL数据库提供给WordPress容器,而无需将其暴露给主机OS或更高版本。

1.4、不,我仍然不相信

我也是一样不相信。

当我第一次遇到Docker时,这似乎是一个不必要的且有些艰巨的障碍。我在运行VM和配置依赖项方面有丰富的经验–当然不需要吗?

Docker文档很全面,但是学习曲线很陡。教程通常很差,并且:

  1. 假设读者完全理解所有术语,
  2. 无法解释或过度解释深奥的要点
  3. 很少讨论在开发过程中如何使用Docker。

当我开始时,我认为Docker无法处理动态应用程序重启或调试。教程经常声称每次代码更改都需要缓慢而麻烦的应用程序重建。于是我放弃了。

最终,另一位开发人员向我展示了Docker强大的应用场景,致使我深入研究了Docker几个月,学习研究的正是我缺少的。

1.5、来看看能做什么?

不管你使用哪种Web开发方法和堆栈,Docker都可以提供帮助。它在构建时提供一致的环境和或紧密匹配生产服务器上的依赖项。

Docker环境:

  1. 在没有活动/快速互联网连接的情况下可以工作(在旅行,演示中等期间很有用)
  2. 允许实验而没有风险。如果您不小心擦除了本地MySQL数据库,没人会介意。
  3. 不受成本和使用限制。

1.5.1、整体Web应用程序

整体应用程序包含前端和后端代码的混合。通常,该应用程序使用Web服务器,服务器语言运行时,数据存储以及客户端HTML,CSS,JavaScript和框架来呈现页面并提供API。WordPress是一个典型的例子。

Docker可用于复制该环境,因此所有依赖项均可在您的开发PC上使用。

1.5.2、无服务器Web应用程序

无服务器应用程序通常使用JavaScript框架在浏览器中实现大多数功能,以创建单页应用程序(SPA)。核心站点/应用程序将下载一次。

小型API可能以无服务器功能运行,从而提供了附加数据和服务。尽管名称如此,但服务器仍在使用中-但您无需担心对其进行管理。您创建一个从JavaScript Ajax请求按需启动的功能,例如,将表单数据通过电子邮件发送给销售团队的代码。

Docker可在开发环境中用于:

  • 运行构建过程,例如JavaScript模块捆绑和Sass预处理
  • 服务网络应用程序,以及
  • 模拟用于无服务器功能测试的基础架构。

1.5.3、静态站点

使用构建过程构建静态站点,该过程将内容(markdown文件,JSON数据,数据库字段等)放入模板中,以创建包含静态HTML,CSS,JavaScript和媒体文件的文件夹。这些预渲染的文件可以部署在任何地方:不需要服务器端运行时或数据库。

静态站点通常称为JAMstack(JavaScript,API和Markdown)。所有内容都在可能的情况下预先呈现,但是动态服务(例如站点搜索)可以采用基于服务器的API。

Docker可用于在任何开发PC上提供可复制的构建环境。


相关文章
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
158 3
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
171 45
|
15天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
22天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
27 7
|
26天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
26天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
35 2
|
25天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
34 1
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
下一篇
DataWorks