目 录CONTENT

文章目录

Docker 系列 (二):部署 Memos,打造你的私有化“碎片化笔记”

y总
2026-03-22 / 0 评论 / 0 点赞 / 4 阅读 / 4866 字

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 的实战大门!

0

评论区