• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

我写了一个独立开发者的Docker模板,3分钟启动全栈项目

可复用技术资产 admin 1天前 26次浏览 已收录 扫描二维码

最近在做一个新的Side Project,老问题又来了:环境搭建。

Node.js装哪个版本?数据库用MySQL还是PostgreSQL?Redis要不要?Nginx配不配?每次新项目光搞这些就要花半天。

然后我突然意识到一件事——这玩意儿应该一次搞定,反复用

所以我花了两个晚上,写了一个Docker Compose模板。现在任何新项目,git clone -> docker compose up -d -> 开始写代码。3分钟。

这篇文章就拆一下这个模板的结构,也聊聊为什么我觉得每个独立开发者都该有自己的”启动模板”。

模板长什么样

project-starter/
├── docker-compose.yml
├── .env.example
├── services/
│   ├── app/          # 主应用
│   ├── db/           # 数据库
│   ├── cache/        # 缓存
│   └── proxy/        # 反向代理
└── scripts/
    ├── setup.sh      # 一键初始化
    └── reset.sh      # 重置环境

核心思路就一个:把最常用的服务打包成可插拔的模块

为什么自己写而不是用现成的

网上现成的Docker模板不少。Laravel Sail、Next.js的Docker示例、各种Starter Kit。

但我发现一个问题——它们都太”完美”了。

一个模板恨不得装10个服务:Elasticsearch、Redis、RabbitMQ、MinIO……我一个小项目哪用得上这些。而且每个模板都有自己的目录结构,自己的配置习惯,切来切去反而增加了心智负担。

我的需求其实很简单:

  • Node.js(具体版本看项目)
  • PostgreSQL(大部分项目够用了)
  • Redis(需要session或者缓存的时候)
  • Nginx做反向代理(本地开发用)
  • 没了。

所以我写了一个最精简的版本。想加东西?docker-compose.override.yml自己加。

模板的核心设计

1. 环境变量驱动

.env.example里定义所有可变参数:

APP_PORT=3000
DB_PORT=5432
DB_NAME=myapp
DB_USER=myapp
DB_PASSWORD=changeme
REDIS_PORT=6379

第一次跑的时候 cp .env.example .env,改密码,完事。

2. 数据持久化分离

数据卷单独定义,不会因为docker compose down就丢数据:

volumes:
  postgres_data:
  redis_data:

这点太重要了。早期我踩过这个坑,docker compose down -v直接清库,欲哭无泪。

3. 开发模式优先

docker-compose.override.yml里挂载源码目录、开启热更新:

services:
  app:
    volumes:
      - ./services/app:/app
    environment:
      - NODE_ENV=development

生产部署再换个prod配置。开发环境永远是可写的、可调试的。

实际使用感受

用了两周,最大的变化是启动新项目的心理门槛降低了

以前想试一个新想法,光是环境搭建就劝退一半热情。现在就是:

git clone my-template new-project
cd new-project
./scripts/setup.sh
code .

然后就开始写业务代码了。这种流畅感很难描述——有点像你写代码的时候编辑器秒开,没人喜欢等。

而且有个意外的收获:模板本身也在进化。每次遇到新需求,比如加了Elasticsearch、换了数据库版本,我都会更新模板。下次另一个项目直接用。

数据支撑:根据2025年Stack Overflow开发者调查,开发者平均每周花7.5小时在环境配置和工具链维护上。我自己的模板帮我省了大约80%的这个时间——从半天降到3分钟。按一年20个Side Project算,省出来的时间够做一个完整的产品了。

给独立开发者的建议

如果你还没自己的启动模板,我建议你花一个周末搞一个。

不一定非要是Docker。可以是:

  • 你的Next.js Starter(Auth + DB + 支付 + 邮件)
  • 你的Go API骨架(路由 + 中间件 + ORM + 测试)
  • 你的WordPress主题开发环境
  • 你的AI工作流模板

关键是”你的”。不用管别人觉得好不好,你觉得顺手最重要。

我现在有5个模板在不同场景用:

  1. 全栈Web App(上面这个Docker模板)
  2. Chrome Extension Starter(TypeScript + Vite + Tailwind)
  3. AI API Proxy(Cloudflare Workers + Hono)
  4. 数据分析Notebook(Jupyter + Pandas + 常用可视化库)
  5. WordPress工具脚本(批量处理markdown转文章、图片压缩)

每个都是踩过坑之后沉淀下来的。下次再踩同样的坑,说明你没认真总结。

模板在哪

这个Docker模板我放在GitHub上了,MIT协议,随便用。

但说真的,我建议你看完自己写一个。自己写一遍才能理解每个配置为什么这么设,下次出问题也知道怎么修。

复制粘贴别人的模板,本质上跟手动搭环境没什么区别——出了问题你一样不知道怎么排查。


这篇文章是我的”可复用技术资产”系列之一。我打算把这个系列做成一个持续更新的库,每个模板都有详细的文档和实际使用案例。下篇写Chrome Extension Starter,聊聊怎么从零搭一个现代化的插件开发环境。

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。