从脚本到服务:用 Docker Compose 管理一个小项目

很多个人项目最初只有一个脚本:在电脑上可以运行,换一台机器就要重新安装依赖、修改配置,再手动启动。2021 年我给一个小工具做整理时,决定把“运行环境”也作为项目的一部分保存下来。 先把服务边界说清楚 我先把程序拆成三个部分:应用本身、持久化数据、配置文件。应用容器可以随时重建,数据目录需要长期保留,配置则通过环境变量注入。这样做的好处是,升级应用时不必碰数据,迁移服务器时也只需要打包数据目录和 compose 文件。 一个最小的 docker-compose.yml 可以这样写: version: "3.8" services: app: image: example/app:1.0 restart: unless-stopped ports: - "8080:8080" env_file: - .env volumes: - ./data:/var/lib/app restart: unless-stopped 让机器重启后服务自动恢复;版本号固定则避免“今天能跑、明天突然变样”。开发阶段可以使用 latest,生产环境最好明确写版本。 配置和数据分开 密码、令牌等内容不应该提交到 Git。项目里只保留 .env.example,真正的 .env 放在服务器上,并限制文件权限: cp .env.example .env chmod 600 .env docker compose up -d 备份也围绕数据目录进行。对小项目来说,每天压缩一次数据并保留最近七份,已经比“只在出问题时想起来备份”可靠很多。 让部署变成一个动作 最后我把更新流程固定为:拉取代码、检查配置、构建新镜像、重新创建容器、查看日志。步骤固定之后,部署不再依赖某个人记得哪些命令,也更容易在低配服务器上控制资源。 这个实践让我意识到,轻量化不只是少装软件,更是让每个组件的职责足够单一。服务越小,备份、迁移和排错都越容易。

2021年6月18日 · 1 分钟 · 三巧