docker-compose.yml
Rama main · réplica de lectura del repositorio original.
version: "3.8"
services:
attic:
image: ghcr.io/lmmendes/attic:latest
# Start the entrypoint as root so it can apply optional PUID/PGID ownership;
# the entrypoint drops privileges before starting attic.
user: "0:0"
ports:
- "8080:8080"
environment:
- ATTIC_PORT=8080
- ATTIC_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable
- ATTIC_S3_ENDPOINT=${ATTIC_S3_ENDPOINT}
- ATTIC_S3_BUCKET=${ATTIC_S3_BUCKET}
- ATTIC_S3_REGION=${ATTIC_S3_REGION}
- ATTIC_S3_ACCESS_KEY=${ATTIC_S3_ACCESS_KEY}
- ATTIC_S3_SECRET_KEY=${ATTIC_S3_SECRET_KEY}
- ATTIC_LOCAL_STORAGE_PATH=${ATTIC_LOCAL_STORAGE_PATH:-/data/uploads}
- ATTIC_PUID=${ATTIC_PUID:-}
- ATTIC_PGID=${ATTIC_PGID:-}
- ATTIC_OIDC_ENABLED=${ATTIC_OIDC_ENABLED:-false}
- ATTIC_OIDC_AUTO_REDIRECT=${ATTIC_OIDC_AUTO_REDIRECT:-false}
- ATTIC_OIDC_ISSUER_URL=${ATTIC_OIDC_ISSUER_URL}
- ATTIC_OIDC_CLIENT_ID=${ATTIC_OIDC_CLIENT_ID}
- ATTIC_OIDC_CLIENT_SECRET=${ATTIC_OIDC_CLIENT_SECRET:-}
- ATTIC_AUTH_DISABLED=${ATTIC_AUTH_DISABLED:-false}
- ATTIC_AUTH_DISABLED_USER_EMAIL=${ATTIC_AUTH_DISABLED_USER_EMAIL:-admin}
- ATTIC_BASE_URL=${ATTIC_BASE_URL:-http://localhost:8080}
- ATTIC_SESSION_SECRET=${ATTIC_SESSION_SECRET}
- ATTIC_CORS_ORIGINS=${ATTIC_CORS_ORIGINS:-http://localhost:8080}
- ATTIC_GOOGLE_BOOKS_API_KEY=${ATTIC_GOOGLE_BOOKS_API_KEY:-}
- ATTIC_TMDB_API_KEY=${ATTIC_TMDB_API_KEY:-}
- ATTIC_REBRICKABLE_API_KEY=${ATTIC_REBRICKABLE_API_KEY:-}
- ATTIC_BGG_API_KEY=${ATTIC_BGG_API_KEY:-}
- ATTIC_IGDB_CLIENT_ID=${ATTIC_IGDB_CLIENT_ID:-}
- ATTIC_IGDB_CLIENT_SECRET=${ATTIC_IGDB_CLIENT_SECRET:-}
volumes:
- attic_uploads:/data/uploads
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
networks:
- attic-network
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER:-attic}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-attic}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-attic}"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- attic-network
keycloak:
image: quay.io/keycloak/keycloak:26.0
command: start --optimized
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/${KEYCLOAK_DB:-keycloak}
KC_DB_USERNAME: ${POSTGRES_USER:-attic}
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
KC_HOSTNAME: ${KEYCLOAK_HOSTNAME}
KC_HOSTNAME_STRICT: "false"
KC_HTTP_ENABLED: "true"
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-admin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
ports:
- "8180:8080"
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
networks:
- attic-network
volumes:
postgres_data:
attic_uploads:
networks:
attic-network:
driver: bridge