services: joplin-db: image: postgres:latest container_name: joplin-db volumes: - /path/to/joplin:/var/lib/postgresql ports: - "${POSTGRES_PORT}:5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 10 start_period: 15s networks: - joplin-net joplin: image: joplin/server:latest container_name: joplin-server depends_on: - joplin-db ports: - "${HTTP_PORT}:22300" restart: unless-stopped environment: - APP_PORT=${HTTP_PORT} - APP_BASE_URL=${APP_BASE_URL} - DB_CLIENT=pg - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DATABASE=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PORT=${POSTGRES_PORT} - POSTGRES_HOST=joplin-db - MAILER_ENABLED=1 - 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} - APP_ADMIN_EMAIL=${APP_ADMIN_EMAIL} - APP_ADMIN_PASSWORD=${APP_ADMIN_PASSWORD} - APP_ADMIN_NAME=${APP_ADMIN_NAME} networks: - joplin-net networks: joplin-net: external: true