services: joplin_db: image: docker.io/library/postgres:17.5 container_name: joplin_db environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} volumes: - ${APPDATA_PATH}/joplin/db:/var/lib/postgresql/data ports: - ${DB_PORT}:5432 networks: - backend restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"] start_period: 10s interval: 10s timeout: 5s retries: 3 joplin_server: image: docker.io/joplin/server:3.3.13 container_name: joplin_server depends_on: joplin_db: condition: service_healthy environment: - APP_PORT=22300 - APP_BASE_URL=${APP_BASE_URL} - DB_CLIENT=pg - POSTGRES_HOST=joplin_db - POSTGRES_PORT=5432 - POSTGRES_DATABASE=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - MAILER_ENABLED=${MAILER_ENABLED} - MAILER_HOST=${MAILER_HOST} - MAILER_PORT=${MAILER_PORT} - MAILER_SECURITY=${MAILER_SECURITY} - MAILER_AUTH_USER=${MAILER_AUTH_USER} - MAILER_AUTH_PASSWORD=${MAILER_AUTH_PASSWORD} - MAILER_NOREPLY_NAME=${MAILER_NOREPLY_NAME} - MAILER_NOREPLY_EMAIL=${MAILER_NOREPLY_EMAIL} ports: - ${APP_PORT}:22300 networks: - frontend - backend restart: unless-stopped networks: frontend: external: true backend: external: true