玩转 surrealDB

SurrealDB+Docker

玩转 surrealDB

虽然知道 SurrealDB 有一段时间了,但由于它还处在测试阶段,所以并没有进一步使用它。

直到宁浩网surrealDB 入门课程 的出现,让我正式的开始使用它,并开发了一个商业项目。

今天主要讨论的是如何使用 docker 将 surrealDB 安装在你的电脑或服务器上面。

使用 Docker

由于我并不想在我的笔记本电脑直接安装 Surreal,因为我不喜欢安装那么多的开发软件进来,并且我的服务器都是基于 docker 管理的,所以我决定使用官方提供的 docker image

按照官方指南虽然很容易,但当使用 HTTP 请求时却无法工作,因为指南中没有明确说明如何设置启动 docker image 的 username / password。

docker run --rm -p 8000:8000 surrealdb/surrealdb:latest start --user root --pass root

使用此命令就可以正确启动 docker 了。

使用 docker-compose

docker 方式很容易,但更主要的是我想把它用在一个 Nuxt3 项目上,并且需要支持 traefik 的配置,所以我制作了一个 docker-compose.yaml 文件。

version: '3.8'

services:

  surrealdb:
    image: surrealdb/surrealdb:latest
    container_name: surrealdb
    ports:
      - "8000:8000"
    stdin_open: true
    tty: true
    command:
      - start
      - --user=root
      - --pass=root
    restart: always

这是一个完整的基础版本的 docker-compose,然后我还需要把 traefik 的配置加进来:

version: '3.8'

services:

  surrealdb:
    image: surrealdb/surrealdb:latest
    container_name: surrealdb
    ports:
      - "8000:8000"
    stdin_open: true
    tty: true
    command:
      - start
      - --user=root
      - --pass=root
    restart: always
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.surreal.loadbalancer.server.port=8000"
      - "traefik.http.routers.surreal0.entrypoints=http"
      - "traefik.http.routers.surreal0.middlewares=https-redirect@file"
      - "traefik.http.routers.surreal0.entrypoints=https"
      - "traefik.http.routers.surreal0.rule=Host(`surreal.$DOMAIN`)"
      - "traefik.http.routers.surreal.entrypoints=https"
      - "traefik.http.routers.surreal.rule=Host(`surreal.$DOMAIN`)"
      - "traefik.http.routers.surreal.tls=true"

networks:
  traefik:
    external: true

现在来看虽然是比较完备的,但是如果在实际应用中我们还需要让这个数据库拥有备份功能,下面我将重新制作一个 Dockerfile 来支持数据库备份的 CLI。

Dockerfile

FROM busybox:1.35.0-uclibc as busybox

FROM surrealdb/surrealdb:latest
COPY --from=busybox /bin/sh /bin/sh
COPY --from=busybox /bin/mkdir /bin/mkdir
COPY --from=busybox /bin/cat /bin/cat
COPY --from=busybox /bin/chmod /bin/chmod
ENTRYPOINT /surreal start --log debug --user $DB_USER --pass $DB_PASSWORD file://database.db

docker-compose.yaml 最终版

version: '3.8'

services:
  db:
    env_file:
      - ./.env
    build:
      args:
        - DB_USER=${DB_USER}
        - DB_PASSWORD=${DB_PASSWORD}
      context: ./
      dockerfile: Dockerfile
    image: db
    ports:
      - 8000:8000
    volumes:
      - ./data/database.db:/database.dbservices:
  db:
    env_file:
      - ./.env
    build:
      args:
        - DB_USER=${DB_USER}
        - DB_PASSWORD=${DB_PASSWORD}
      context: ./
      dockerfile: Dockerfile
    image: db
    ports:
      - 8000:8000
    restart: always
    networks:
      - traefik
    volumes:
      - ./data/database.db:/database.db
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.surreal.loadbalancer.server.port=8000"
      - "traefik.http.routers.surreal0.entrypoints=http"
      - "traefik.http.routers.surreal0.middlewares=https-redirect@file"
      - "traefik.http.routers.surreal0.entrypoints=https"
      - "traefik.http.routers.surreal0.rule=Host(`surreal.$DOMAIN`)"
      - "traefik.http.routers.surreal.entrypoints=https"
      - "traefik.http.routers.surreal.rule=Host(`surreal.$DOMAIN`)"
      - "traefik.http.routers.surreal.tls=true"
networks:
  traefik:
    external: true

.env 文件

DB_USER=root
DB_PASSWORD=root

有了这 3 个文件,就可以运行 surrealdb,并连接到 image:

docker ps
docker exec -it <DOCKER IMAGE ID> /bin/sh`

使用实例执行 backup up 命令:

/surreal export --conn http://localhost:8000 --user root --pass root --ns test --db test export.sql

命令必须以 Dockerfile 中描述的 '/surreal' 开头。

现在我们已经可以使用 docker-compose 运行 surrealDB 了,这样应该没有问题应用在 Nuxt 3 项目中了吧?

下次我们再具体聊聊。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容