# documentation: https://github.com/laurent22/joplin/blob/dev/packages/server/README.md
# slogan: Self-hosted sync server for Joplin
# category: productivity
# tags: joplin
# logo: svgs/joplin.png
# port: 22300

services:
  postgres:
    image: 'postgres:16'
    volumes:
      - joplin-postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
      - POSTGRES_USER=${SERVICE_USER_POSTGRES}
      - POSTGRES_DB=joplin
    healthcheck:
      test:
        - CMD
        - pg_isready
        - -d
        - joplin
      interval: 10s
      timeout: 5s
      retries: 5

  joplin:
    image: 'joplin/server:latest'
    platform: 'linux/amd64'
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - SERVICE_URL_JOPLIN_22300
      - APP_BASE_URL=${SERVICE_URL_JOPLIN}
      - DB_CLIENT=pg
      - POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
      - POSTGRES_DATABASE=joplin
      - POSTGRES_USER=${SERVICE_USER_POSTGRES}
      - POSTGRES_PORT=5432
      - POSTGRES_HOST=postgres
      # Default login is "admin@localhost" and password "admin"
    healthcheck:
      test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/22300' || exit 1"]
      interval: 5s
      timeout: 20s
      retries: 3
