# This compose file is meant to spin up a copy of supported database vendors,
# Redis, S3 (Minio) and a fake SMTP server (MailDev).
#
# ONLY FOR DEBUGGING. THIS IS NOT INTENDED FOR PRODUCTION USE.
#
# For production use see the docker compose file example in the docs:
#     https://docs.directus.io/self-hosted/docker-guide.html#example-docker-compose
#
# For receiving emails via MailDev, you'll need to add the following to your env:
#   EMAIL_FROM=directus@directus.io
#   EMAIL_TRANSPORT=smtp
#   EMAIL_SMTP_HOST=0.0.0.0
#   EMAIL_SMTP_PORT=1025
#
# Ports:
#   Maildev SMTP:    1025
#   Maildev Web-UI:  1080
#   Postgres:        5100
#   MySQL (8):       5101
#   MariaDB:         5102
#   MS SQL:          5103
#   Oracle:          5104
#   Redis:           5105
#   Minio (S3):      5106
#   Azure            5107
#   MySQL (5.7):     5108
#   Keycloak:        5110
#   Postgres (10):   5111
#   Minio Admin:     5112
#   CockroachDB:     5113
#
# Credentials:
#   Postgres:
#     User:          postgres
#     Password:      secret
#
#   MySQL:
#     User:          root
#     Password:      secret
#
#   MariaDB:
#     User:          root
#     Password:      secret
#
#   MS SQL:
#     User:          sa
#     Password:      Test@123
#
#   Oracle DB:
#     User:          secretsysuser
#     Password:      secretpassword
#     Role:          SYSDEFAULT
#     SID:           XE
#
#   Redis:
#     n/a
#
#   Minio:
#     Key:           minioadmin
#     Secret:        minioadmin
#     (Make sure to set S3_FORCE_PATH_STYLE to true)
#
#   Azure Blob Storage
#     Name:          devstoreaccount1
#     Key:           Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
#     Container:     devstoreaccount1
#
#   Keycloak
#     User:          admin
#     Password:      secret
#
#   CockroachDB
#     User:          admin
#     Password:      --

version: '3.8'

services:
  postgres:
    image: postgis/postgis:13-3.4-alpine
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: directus
    ports:
      - 5100:5432

  postgres10:
    image: postgis/postgis:10-3.2-alpine
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: directus
    ports:
      - 5111:5432

  mysql:
    image: mysql:8
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: directus
    ports:
      - 5101:3306

  mysql5:
    image: mysql:5
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: directus
    ports:
      - 5108:3306

  maria:
    image: mariadb:11.4
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: directus
    ports:
      - 5102:3306

  mssql:
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=Test@123
    ports:
      - 5103:1433

  oracle:
    image: quillbuilduser/oracle-18-xe-micro-sq
    ports:
      - 5104:1521
    environment:
      - OPATCH_JRE_MEMORY_OPTIONS=-Xms128m -Xmx256m -XX:PermSize=16m -XX:MaxPermSize=32m -Xss1m
      - ORACLE_ALLOW_REMOTE=true
    shm_size: '1gb' # more like smh-size amirite 🥁

  cockroachdb:
    image: cockroachdb/cockroach:latest-v23.2
    command: start-single-node --cluster-name=example-single-node --insecure
    ports:
      - 5113:26257

  redis:
    image: redis:6-alpine
    ports:
      - 5105:6379

  minio:
    image: minio/minio
    command: server /data/minio/ --console-address :9001
    ports:
      - 5106:9000
      - 5112:9001

  azure:
    image: mcr.microsoft.com/azure-storage/azurite
    ports:
      - 5107:10000

  keycloak:
    image: quay.io/keycloak/keycloak
    environment:
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: secret
    ports:
      - 5110:8080
    command:
      - start-dev

  maildev:
    image: maildev/maildev
    ports:
      - 1025:1025
      - 1080:1080
