# This is a sample docker-compose file that can be used to run Joplin Server # along with a PostgreSQL server. # # Update the following fields in the stanza below: # # POSTGRES_USER # POSTGRES_PASSWORD # APP_BASE_URL # # APP_BASE_URL: This is the base public URL where the service will be running. # - If Joplin Server needs to be accessible over the internet, configure APP_BASE_URL as follows: https://example.com/joplin. # - If Joplin Server does not need to be accessible over the internet, set the APP_BASE_URL to your server's hostname. # For Example: http://[hostname]:22300. The base URL can include the port. # APP_PORT: The local port on which the Docker container will listen. # - This would typically be mapped to port to 443 (TLS) with a reverse proxy. # - If Joplin Server does not need to be accessible over the internet, the port can be mapped to 22300. networks: app-network: transcribe-network: shared-network: services: db: image: postgres:16 profiles: - full - server volumes: - ./data/postgres:/var/lib/postgresql/data networks: - app-network ports: - "5432:5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DATABASE} app: image: joplin/server:latest profiles: - full - server depends_on: - db - transcribe ports: - "22300:22300" networks: - app-network - shared-network restart: unless-stopped environment: - APP_PORT=22300 - APP_BASE_URL=${APP_BASE_URL} - DB_CLIENT=pg - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DATABASE=${POSTGRES_DATABASE} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PORT=${POSTGRES_PORT} - POSTGRES_HOST=db - TRANSCRIBE_API_KEY=${TRANSCRIBE_API_KEY} - TRANSCRIBE_BASE_URL=http://transcribe:4567 - TRANSCRIBE_ENABLED=${TRANSCRIBE_ENABLED} transcribe-db: image: postgres:16 profiles: - full volumes: - ./data/transcribe-postgres:/var/lib/postgresql/data networks: - transcribe-network ports: - "${QUEUE_DATABASE_PORT}:5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=${QUEUE_DATABASE_PASSWORD} - POSTGRES_USER=${QUEUE_DATABASE_USER} - POSTGRES_DB=${QUEUE_DATABASE_NAME} command: -p ${QUEUE_DATABASE_PORT} transcribe: image: joplin/transcribe:latest profiles: - full volumes: - /var/run/docker.sock:/var/run/docker.sock - ${HTR_CLI_IMAGES_FOLDER}:/app/packages/transcribe/images depends_on: - transcribe-db ports: - "4567:4567" networks: - transcribe-network - shared-network restart: unless-stopped environment: - APP_PORT=4567 - DB_CLIENT=pg - QUEUE_DATABASE_NAME=${QUEUE_DATABASE_NAME} - QUEUE_DATABASE_USER=${QUEUE_DATABASE_USER} - QUEUE_DATABASE_PASSWORD=${QUEUE_DATABASE_PASSWORD} - QUEUE_DATABASE_PORT=${QUEUE_DATABASE_PORT} - QUEUE_DATABASE_HOST=transcribe-db - API_KEY=${TRANSCRIBE_API_KEY} - HTR_CLI_IMAGES_FOLDER=${HTR_CLI_IMAGES_FOLDER}