1. 为什么选择 Memos 作为第一个项目?
在 Docker 安装完成后,很多人的第一个项目会选择 Nginx,但那太枯燥了。我推荐 Memos,因为它:
极致轻量:采用 Go + React + SQLite 架构,内存占用极低(通常不到 50MB),非常适合低配服务器。
功能纯粹:像发微博一样记录灵感,支持 Markdown、标签和自建图床,体验流畅。
教学意义:它是理解 Docker 数据挂载(Volumes)的绝佳案例——通过它你能直观感受持久化存储的重要性。
2. 核心概念:什么是持久化存储?
在开始动手之前,必须理解一个原则:容器是易碎的,但数据是永恒的。
如果不做“卷挂载(Volume Mapping)”,当你删除容器或更新镜像时,你在 Memos 里写的所有笔记都会消失。我们将通过 Docker Compose 把容器内的数据库文件“映射”到 Debian 系统的本地文件夹中,这样即使容器被销毁,数据依然安全。
3. 部署步骤
第一步:创建项目目录
为了方便管理,建议为每个 Docker 项目创建独立的文件夹:
mkdir -p ~/docker/memos && cd ~/docker/memos第二步:编写 docker-compose.yml
这是 Docker 的“剧本”。使用 nano docker-compose.yml(或你喜欢的编辑器)创建文件,并将以下内容粘贴进去:
services:
memos:
image: neosmemo/memos:latest # 始终使用最新稳定版
container_name: memos # 容器名称,方便后续管理
hostname: memos
restart: always # 关键:确保系统重启或崩溃后自动重启
ports:
- "5230:5230" # 格式 [宿主机端口]:[容器内端口]
volumes:
- ./data:/var/opt/memos # 关键:将当前目录下的 data 文件夹映射到容器内
networks:
- memos-network
networks:
memos-network:
driver: bridge参数详解:
ports:如果宿主机的 5230 端口已被占用,可以改为其他端口,例如 "8080:5230"。
volumes:./data 表示数据会保存在你当前目录 ~/docker/memos/data 下。哪怕你把这个文件夹复制到另一台服务器,笔记依然存在。
第三步:一键启动
确保你仍在 docker-compose.yml 所在目录(即 ~/docker/memos),执行以下命令:
docker compose up -d-d 参数代表“后台运行(Detached mode)”,这样即使关闭终端窗口,应用也不会停止。
说明:如果你按照系列第一篇安装了 Docker 和 docker-compose-plugin,那么 docker compose 命令可以直接使用。若遇到命令不存在,请确认插件已正确安装。
4. 进阶:如何访问与初始配置
打开网页:在浏览器输入 http://你的服务器IP:5230(如果修改了端口,请使用对应端口)。
创建管理员:首次访问会要求设置用户名和密码,请妥善保存。
中文支持:进入 Settings → General → Language 修改为简体中文。
5. 长期维护:备份与升级
如何备份数据?
因为做了持久化挂载,备份变得异常简单。你只需定期备份 ~/docker/memos/data 文件夹即可:
tar -czvf memos_backup_$(date +%F).tar.gz ~/docker/memos/data此命令会在当前目录生成一个带日期的压缩包,内含所有笔记数据。
如何升级到新版本?
当 Memos 官方发布新版时,只需三行命令:
docker compose pull # 拉取最新镜像
docker compose up -d # 自动重建容器(旧容器会被替换,数据保留)
docker image prune -f # 清理不再使用的旧镜像整个过程数据零丢失,服务几乎不间断。
6. 常见坑点(避坑指南)
权限问题:如果发现 Memos 无法保存设置或写入文件,通常是 data 文件夹权限不足。Memos 容器内部默认以 UID 1000 运行,可执行以下命令修复:
sudo chown -R 1000:1000 ~/docker/memos/data防火墙:如果网页无法访问,请检查 Debian 防火墙是否放行了对应端口。例如使用 ufw:
sudo ufw allow 5230若使用 iptables,请根据规则放行。
博主结语
Memos 是我每天使用频率最高的工具之一。希望这篇文章能帮你顺利开启 Docker 的实战大门!
评论区