基于Docker的安装 Docker

如何在Docker上托管Directus。

直接发表给Docker Hubgithub packagesdirectus/directus下。 要使用Docker Hub的最新Directus镜像,请运行:

bash
# 确保在生产环境中更改敏感值(KEY、SECRET等)
docker run \
  -p 8055:8055 \
  -e KEY=255d861b-5ea1-5996-9aa3-922530ec40b1 \
  -e SECRET=6116487b-cda1-52c2-b5b5-c8022c45e263 \
  directus/directus

安装指定版本

要使用更具体的 Directus 版本,可以使用以下标签之一:

  • 完整版本,例如 9.0.0
  • 次要版本,例如 9.0
  • 主要版本,例如 9
  • 要使用特定版本的 Directus,请运行:
bash
# 确保在生产环境中更改敏感值(KEY、SECRET等)
docker run \
  -p 8055:8055 \
  -e KEY=255d861b-5ea1-5996-9aa3-922530ec40b1 \
  -e SECRET=6116487b-cda1-52c2-b5b5-c8022c45e263 \
  directus/directus:9.0.0

配置管理员用户

发布的 Docker 镜像将自动填充数据库并创建管理员用户。要配置此第一个用户的电子邮件/密码,请传递以下环境变量:

bash
ADMIN_EMAIL="admin@example.com"
ADMIN_PASSWORD="d1r3ctu5"

数据持久性

容器是短暂的,这意味着每当您停止容器时,与之关联的所有数据都将被删除除非在创建容器时进行持久化

Directus 镜像默认会使用以下位置进行数据持久化(请注意,可以通过环境变量更改这些位置):

  • /directus/uploads 用于上传文件
  • /directus/database (仅在使用 SQLite 且未配置到不同文件夹时)
  • /directus/extensions 用于加载扩展

Docker Compose

使用 Docker Compose 时,您可以使用以下设置开始使用 - 确保在生产环境中更改所有敏感值(SECRET、DB_PASSWORD等):

yaml
version: '3'
services:
  database:
    container_name: database
    image: postgis/postgis:13-master
    volumes:
      - ./data/database:/var/lib/postgresql/data
    networks:
      - directus
    environment:
      POSTGRES_USER: directus
      POSTGRES_PASSWORD: directus
      POSTGRES_DB: directus

  cache:
    container_name: cache
    image: redis:6
    networks:
      - directus

  directus:
    container_name: directus
    image: directus/directus:latest
    ports:
      - 8055:8055
    volumes:
      # 默认情况下,上传存储在 `/Directus/uploads` 中始终确保您的卷在使用本地驱动程序时与存储根相匹配
      - ./uploads:/directus/uploads
      # 使用sqlite时请确保已挂载volume
      # - ./database:/directus/database
      # 如果您想从主机加载扩展
      # - ./extensions:/directus/extensions
    networks:
      - directus
    depends_on:
      - cache
      - database
    environment:
      KEY: 255d861b-5ea1-5996-9aa3-922530ec40b1
      SECRET: 6116487b-cda1-52c2-b5b5-c8022c45e263

      DB_CLIENT: pg
      DB_HOST: database
      DB_PORT: '5432'
      DB_DATABASE: directus
      DB_USER: directus
      DB_PASSWORD: directus

      CACHE_ENABLED: 'true'
      CACHE_STORE: redis
      CACHE_REDIS: 'redis://cache:6379'

      ADMIN_EMAIL: admin@example.com
      ADMIN_PASSWORD: d1r3ctu5

      # Make sure to set this in production
      # (see https://docs.directus.io/self-hosted/config-options#general)
      # PUBLIC_URL: 'https://directus.example.com'

networks:
  directus:

用Docker撰写更新

如果您不为Directus映像使用latest,则需要调整 docker-compose.yml文件以增加标签版本号,例如:

diff
-   image: directus/directus:9.0.0-rc.101
+   image: directus/directus:9.0.0

您可以从 docker-compose 根目录下执行以下两个命令:

bash
$ docker-compose pull
$ docker-compose up -d

图像将被拉动并重新创建容器。 迁移将自动发生,因此一旦容器启动,您将使用最新版本(或您指定的版本)。

支持的数据库

Directus Docker映像包含API中支持的所有可选依赖项。 这意味着可以与大多数支持的数据库和存储适配器一起使用Docker映像,而无需创建自定义图像。

OracleDB
OracledB的节点客户端(node-oracledB)需要更多的本机依赖项和特定的配置才能运行。 官方Directus Docker映像不包括这些依赖项。 请参阅[https://blogs.oracle.com/opal/dockerfiles-for-node-oracledb-are-easy-and-simple]( - 兴趣和简单)有关包含oracledB的内容的更多信息。