反思旅程
让我们花一点时间回顾一下我们在这门课程中的学习历程。
恭喜!🎉 你已经完成了本课程。
我们学到了什么
我们从基础开始:什么是容器和镜像?我们了解到 Docker 提供了打包(镜像)、交付(自动拉取镜像)以及运行时环境(容器)。我们学习了这些基本组件如何提供一种全新的软件交付思维方式。
课程的其余部分是一次扩展教程,引导你完成使用 Docker 创建、开发和部署一个功能完整的 Rails 应用的全过程。我们通过容器生成了 Rails 应用,并创建了一个用于运行 Rails 应用的自定义镜像,逐步对其进行增强。
我们引入了 Docker Compose,使用它构建了一个多服务应用,包含 Redis 和一个与数据分离的卷的数据库。我们还让 Docker 化的设置能够良好地支持 JavaScript,了解了如何同时处理标准的资产管道和 webpacker——Rails 最新的现代 JavaScript 前端集成方式。
我们还涵盖了如何测试应用,甚至实现了依赖 Chrome 中 JavaScript 的端到端测试,支持无头模式和非无头模式。
Docker 的局限性
然而,即使在 Docker 领域中,也不存在完美无缺的事物。我们探讨了几种在使用 Docker 时可能遇到的问题,并尽最大努力缓解这些问题。
生产环境之旅
最后,我们正式开启了迈向生产环境的旅程。在快速浏览了生产环境的现状,理解了所需的能力和可用工具后,我们对应用进行了改进,使其能够在生产环境中部署。
我们学习了如何将 Docker 镜像推送到注册中心,使其可供其他机器交付使用。接着,我们引入了 Swarm,并利用它在本地机器上搭建了一个类生产环境的实验平台。
最后,我们更进一步,将应用部署到了云端,分别在 DigitalOcean 和 AWS 上使用三节点集群,并借此演示了 Swarm 的扩展能力。
这已经取得了巨大的成就!🎉
尽管我们已经迈出了通往生产环境的第一步,但要实现一个完全健壮、由 CI/CD 流水线驱动、安全且可扩展的生产环境,仍有太多内容需要涵盖。希望你已初步领略到 Docker 所带来的强大能力,看到了它的潜力,并受到启发,想要继续深入学习。
本章内容是一个“杂烩”,包含了之前未能纳入其他章节的各种主题。除了为你播下一些有用的想法外,本章还将为你提供一些关于如何继续探索 Docker 的指引。