version: '3.5'

## FOR TEST AND DEVELOPMENT ONLY, DO NOT USE IN PRODUCTION   ##
## Setup: https://docs.photoprism.app/developer-guide/setup/ ##

services:
  ## MariaDB 11.2 Database Server
  ## Docs: https://mariadb.com/docs/reference/
  ## Release Notes: https://mariadb.com/kb/en/release-notes-mariadb-11-2-series/
  mariadb-11-2:
    image: mariadb:11.2
    security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
      - seccomp:unconfined
      - apparmor:unconfined
    command: --port=4001 --innodb-strict-mode=1 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001"
    ports:
      - "4003:4001" # database port (host:container)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MARIADB_AUTO_UPGRADE: "1"
      MARIADB_INITDB_SKIP_TZINFO: "1"
      MARIADB_DATABASE: "photoprism"
      MARIADB_USER: "photoprism"
      MARIADB_PASSWORD: "photoprism"
      MARIADB_ROOT_PASSWORD: "photoprism"

  ## MariaDB 10.11 Database Server
  ## Docs: https://mariadb.com/kb/en/release-notes-mariadb-1011-series/
  mariadb-10-11:
    image: mariadb:10.11
    security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
      - seccomp:unconfined
      - apparmor:unconfined
    command: --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001"
    ports:
      - "4002:4001" # database port (host:container)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MARIADB_AUTO_UPGRADE: "1"
      MARIADB_INITDB_SKIP_TZINFO: "1"
      MARIADB_DATABASE: "photoprism"
      MARIADB_USER: "photoprism"
      MARIADB_PASSWORD: "photoprism"
      MARIADB_ROOT_PASSWORD: "photoprism"

  ## MariaDB 10.5.5 Database Server
  ## Affected by MDEV-25362: Incorrect name resolution for subqueries in ON expressions
  ## see https://jira.mariadb.org/browse/MDEV-25362
  mariadb-10-5-5:
    image: mariadb:10.5.5
    command: --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001" # database port (internal)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
      MYSQL_PASSWORD: "photoprism"
      MYSQL_ROOT_PASSWORD: "photoprism"

  ## MariaDB 10.3 Database Server
  ## Docs: https://mariadb.com/docs/reference/cs10.3/
  mariadb-10-3:
    image: mariadb:10.3
    command: --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001" # database port (internal)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
      MYSQL_PASSWORD: "photoprism"
      MYSQL_ROOT_PASSWORD: "photoprism"

  ## MariaDB 10.2 Database Server
  ## Docs: https://mariadb.com/docs/reference/cs10.2/
  mariadb-10-2:
    image: mariadb:10.2
    command: --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001" # database port (internal)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
      MYSQL_PASSWORD: "photoprism"
      MYSQL_ROOT_PASSWORD: "photoprism"

  ## MariaDB 10.1 Database Server
  mariadb-10-1:
    image: mariadb:10.1
    command: --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
    expose:
      - "4001" # database port (internal)
    volumes:
      - "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
    environment:
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
      MYSQL_PASSWORD: "photoprism"
      MYSQL_ROOT_PASSWORD: "photoprism"

## Join shared "photoprism-develop" network
networks:
  default:
    name: photoprism-develop
    external: true