https://www.jianshu.com/p/226401d00f24

DOCKER安装

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

使用 docker-compose

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


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 项目中了吧?