GitHub
DockerHub
https://hub.docker.com/r/directus/directus
Dockerガイド
データベースにPostgreSQLを選択。
docker-compose.yml
version: "3.7"
services:
##### redis-server
redis:
container_name: redis
image: redis:alpine
volumes:
- ./redis:/etc/redis
# Error Failed to write PID file, Permission denied ---> pidfile /tmp/redis_6379.pid in redis.conf
# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
# To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or
# run the command 'sysctl vm.overcommit_memory=1' for this to take effect.---> on host machine!
# need to download default config file:redis.conf from https://redis.io/topics/config
# In redis.conf : bind 172.18.0.2, protected-mode no, maxmemory 250mb, maxmemory-policy allkeys-lru
command: ["redis-server", "/etc/redis/redis.conf"]
restart: always
networks:
proxy-tier:
ipv4_address: 172.18.0.2
postgres:
image: postgres:alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
proxy-tier:
ipv4_address: 172.22.0.3
directus:
container_name: directus
image: directus/directus:10.9.0
ports:
- 8055:8055
volumes:
- ./uploads:/directus/uploads
# If you want to load extensions from the host
# - ./extensions:/directus/extensions
depends_on:
- redis
- postgres
environment:
KEY: ${KEY}
SECRET: ${SECRET}
DB_CLIENT: ${DB_CLIENT}
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
DB_DATABASE: ${DB_DATABASE}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
CACHE_ENABLED: "true"
CACHE_STORE: "redis"
REDIS: "redis://redis:6379"
# Should create aclfile /etc/redis/users.acl
#REDIS_USERNAME: ${REDIS_USERNAME}
#REDIS_PASSWORD: ${REDIS_PASSWORD}
ADMIN_EMAIL: ${ADMIN_EMAIL}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
CORS_ENABLED: true
CORS_ORIGIN: true
networks:
proxy-tier:
ipv4_address: 172.18.0.4
# Make sure to set this in production
# (see https://docs.directus.io/self-hosted/config-options#general)
# PUBLIC_URL: "https://directus.example.com"
# Environment variables can also be defined in a file (for example `.env`):
# env_file:
# - .env
# For IPv4 only
# docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/24 containers-network
networks:
proxy-tier:
name: containers-network
external: true
.env
HOST="0.0.0.0"
PORT=8055
KEY="xxxx-xxxx-xxxx-xxxx-xxxx"
SECRET="xxxx-xxxx-xxxx-xxxx-xxxx"
DB_CLIENT="pg"
DB_HOST="postgres"
DB_PORT=5432
DB_DATABASE="directus"
DB_USER="directus"
DB_PASSWORD="xxxxxxxxxxxxxxxxxxxxxxxx"
ADMIN_EMAIL="[email protected]"
ADMIN_PASSWORD="xxxxxxxxxxxxxxxxxxxxxxxxx"
Database
Variable | Description | Default Value |
---|---|---|
DB_CLIENT |
Required. What database client to use. One of pg or postgres , mysql , oracledb , mssql , sqlite3 , cockroachdb . |
– |
DB_HOST |
Database host. Required when using pg , mysql , oracledb , or mssql . |
– |
DB_PORT |
Database port. Required when using pg , mysql , oracledb , or mssql . |
– |
DB_DATABASE |
Database name. Required when using pg , mysql , oracledb , or mssql . |
– |
DB_USER |
Database user. Required when using pg , mysql , oracledb , or mssql . |
– |
DB_PASSWORD |
Database user’s password. Required when using pg , mysql , oracledb , or mssql . |
– |
Redis
Directus requires Redis for multi-container deployments. This ensures that things like caching, rate-limiting, and WebSockets work reliably across multiple containers of Directus.
Variable | Description | Default Value |
---|---|---|
REDIS |
Redis connection string, e.g., redis://user:[email protected]:6380/4 . Using this will ignore the other Redis connection parameter environment variables |
– |
REDIS_HOST |
Hostname of the Redis instance, e.g., "127.0.0.1" |
– |
REDIS_PORT |
Port of the Redis instance, e.g., 6379 |
– |
REDIS_USERNAME |
Username for your Redis instance, e.g., "default" |
– |
REDIS_PASSWORD |
Password for your Redis instance, e.g., "yourRedisPassword" |
– |