DevOps 发布于 2024-01-20 * 6分钟阅读

本地开发Docker:几分钟内启动项目

了解Docker如何简化本地开发。发现如何在几分钟内使用可重现环境启动PHP、JavaScript和全栈项目。

对于许多开发者来说,设置本地开发环境曾经意味着安装无尽的依赖项、配置数据库,以及花费数小时解决版本不匹配问题。有了Docker,这些日子已经过去了。

在这篇文章中,我将分享Docker如何改变了我和我的团队的工作方式。从几分钟内让新开发者上手,到在不同机器上保持项目一致性,Docker已经成为我们日常工作中必不可少的工具。

为什么本地开发很重要

在深入了解Docker之前,让我们理解为什么本地开发环境如此关键:

  • 速度:开发者需要快速开始编码,而不需要与设置问题作斗争。
  • 一致性:CI/CD管道使用相同的Dockerfile。
  • 隔离:每个项目都可以有自己的依赖项,而不会产生冲突。

Docker优雅地解决了所有三个问题。

本地开发Docker:核心优势

快速上手

当新开发者加入时,我们不是发送5页的设置文档,而是分享一个docker-compose.yml文件。一个命令后,他们的环境就运行起来了。

docker-compose up -d

几分钟内,他们就拥有了PHP、MySQL、Node.js、Redis或我们使用的任何服务--所有配置都与生产环境完全一致。

可重现环境

我们都听过"但它在我的机器上能工作"。Docker消除了这个问题。容器保证在任何地方都有相同的行为。无论我运行Ubuntu,同事使用Windows,还是CI/CD在云端运行,环境都是相同的。

内置隔离

每个项目都有自己的容器化技术栈。不再有不同PHP版本之间的冲突或不匹配的Node.js依赖项。我可以在项目之间无缝切换,而不会破坏任何东西。

示例:启动PHP + JavaScript项目

这是一个简单的docker-compose.yml,启动PHP/Laravel API和Node.js前端:

version: "3.9"

services:
  app:
    build: ./backend
    volumes:
      - ./backend:/var/www/html
    ports:
      - "8000:80"

  node:
    build: ./frontend
    volumes:
      - ./frontend:/usr/src/app
    ports:
      - "3000:3000"
    command: ["npm", "run", "dev"]

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app_db
    ports:
      - "3306:3306"

用一个命令,我们就有了:

  • 在http://localhost:8000运行的PHP后端。
  • 在http://localhost:3000的Node.js前端。
  • 准备使用的MySQL数据库。

我的团队喜欢它的原因

  • 热重载:我们挂载卷,这样更改会立即更新。
  • 调试:VS Code直接与Docker容器集成。
  • 一致性:CI/CD管道使用相同的Dockerfile。

当有人问"设置项目需要多长时间?"时,我的回答是:大约5分钟。

本地Docker开发最佳实践

  • 使用Docker卷进行持久存储。
  • 添加带有快捷方式的Makefile(make start,make stop)。
  • 保持镜像轻量(尽可能使用Alpine版本)。
  • 记录您的docker-compose.yml,以便新来者理解服务。

结论

Docker不仅使本地开发变得更容易,而且变得愉快。我们不再浪费时间调试设置,而是将时间花在编码、测试和构建真正的功能上。

如果您仍然依赖手动设置或重型虚拟机,请尝试Docker--您永远不会回头。