使用mysql作为memos的数据库

浪子
2023-11-18 / 0 评论 / 搜一下 / 893 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月13日,已超过253天没有更新,若内容或图片失效,请留言反馈。
AI摘要:从memos v0.16.1版本开始,支持使用mysql作为数据库。可以通过docker-compose方式或docker run方式部署memos。如果使用docker-compose方式,需要创建docker-compose.yml文件并编辑,然后重启memos容器。如果使用宿主机的mysql数据库,需要编辑docker-compose.yml文件中的配置。如果使用docker run方式部署,需要运行相应的命令,并根据需要修改数据库相关信息。对于v0.16.1之前的数据,可以使用命令将其转换并导入mysql。转换过程中可能会遇到问题,需要注意memos执行路径和数据库连接情况。演示地址为https://demo.memos.im/。

从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命令看是否可以连通.

演示地址

https://demo.memos.im/

评论 (0)

取消