services: postgres: image: postgres restart: unless-stopped ports: - "15432:5432" shm_size: 128mb environment: POSTGRES_USER: linkshelf POSTGRES_PASSWORD: linkshelf POSTGRES_DB: linkshelf healthcheck: test: [ "CMD-SHELL", "pg_isready -U linkshelf -d linkshelf" ] interval: 2s timeout: 3s retries: 30 mysql: image: mysql:26.10.0 restart: unless-stopped ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=linkshelf - MYSQL_DATABASE=linkshelf - MYSQL_USER=linkshelf - MYSQL_PASSWORD=linkshelf adminer: image: adminer restart: unless-stopped ports: - "8086:8080" mailpit: image: axllent/mailpit restart: unless-stopped ports: # 1025: SMTP - config.default.yaml's smtp.host/port point here so email # verification works locally out of the box, same as postgres above. - "1025:1025" # 8025: web UI for reading the emails this app sends. - "8025:8025" healthcheck: test: [ "CMD", "wget", "-qO-", "http://localhost:8025/readyz" ] interval: 2s timeout: 3s retries: 30