使用mysql作为memos的数据库
从memos v0.16.1版本开始,便开始支持mysql数据库了.
全新部署
一丶使用docker-compose方式部署
创建docker-compose.yml
文件并编辑
version: “3“
services:
db:
image: mysql:8.1.0
container_name: db
restart: always
networks:
- memos_network
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
environment:
- MYSQL_ROOT_PASSWORD=memos
- MYSQL_DATABASE=memos
web:
image: ghcr.io/usememos/memos:latest
container_name: memos
restart: always
networks:
- memos_network
volumes:
- ./memos/:/var/opt/memos
ports:
- “5230:5230“
environment:
- MEMOS_DRIVER=mysql
- MEMOS_DSN=root:memos@tcp(db)/memos
- TZ=Asia/Chongqing
depends_on:
- db
networks:
memos_network:
如memos容器无法启动,重启即可
docker restart memos
- 或者使用宿主机的mysql数据库
则需要编辑
version: “3.0“
services:
memos:
image: neosmemo/memos:0.18.2
container_name: memos
network_mode: “host“
restart: always
volumes:
- ./memos/:/var/opt/memos
ports:
- 5230:5230
environment:
- MEMOS_DRIVER=mysql
- MEMOS_DSN=memos:password@tcp(localhost)/memos
二丶使用docker run部署
docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos ghcr.io/usememos/memos:latest --driver mysql --dsn 'root:password@tcp(localhost)/memos_prod'
root
为数据库用户 password
为数据库密码 localhost
为数据库地址 memos_prod
为数据库用户名 请自行更改
转换数据
v0.16.1之前的数据可以通过以下命令转换数据导入mysql
/usr/local/bin/memos --driver mysql --dsn 'dbuser:dbpass@tcp(dbhost)/dbname' copydb --from sqlite://path_to_your_memos_prod.db
很多人无法转换成功的原因,可能是 1./usr/local/bin/memos无法执行. 改为/usr/local/memos/memos即可. 2.数据库无法连接 把dbhost
改为容器的内网地址.最好在转换之前在容器内执行ping命令看是否可以连通.