92 lines
3.1 KiB
YAML
92 lines
3.1 KiB
YAML
services:
|
|
daemon:
|
|
image: ghcr.io/scanopy/scanopy/daemon:latest
|
|
container_name: scanopy-daemon
|
|
network_mode: host
|
|
privileged: true
|
|
restart: unless-stopped
|
|
environment:
|
|
SCANOPY_LOG_LEVEL: ${SCANOPY_LOG_LEVEL:-info}
|
|
SCANOPY_SERVER_URL: http://127.0.0.1:60072
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost:60073/api/health || exit 1"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 15
|
|
volumes:
|
|
- /srv/docker/scanopy/daemon-config:/root/.config/scanopy/daemon
|
|
# Comment out the line below to disable docker discovery
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
environment:
|
|
POSTGRES_DB: scanopy
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password}
|
|
volumes:
|
|
- /srv/docker/scanopy/postgres_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
networks:
|
|
- scanopy
|
|
|
|
server:
|
|
image: ghcr.io/scanopy/scanopy/server:latest
|
|
ports:
|
|
- "60072:60072"
|
|
environment:
|
|
SCANOPY_LOG_LEVEL: ${SCANOPY_LOG_LEVEL:-info}
|
|
SCANOPY_DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-password}@postgres:5432/scanopy
|
|
SCANOPY_WEB_EXTERNAL_PATH: /app/static
|
|
SCANOPY_PUBLIC_URL: ${SCANOPY_PUBLIC_URL:-http://localhost:60072}
|
|
SCANOPY_INTEGRATED_DAEMON_URL: http://host.docker.internal:60073
|
|
volumes:
|
|
- /srv/docker/scanopy/data:/data
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
daemon:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
networks:
|
|
- scanopy
|
|
- traefik_network
|
|
labels:
|
|
### Auto create icon on Flame dashboard
|
|
- flame.type=application
|
|
- flame.name=${SERVICE_NAME}
|
|
- flame.url=https://${SERVICE_NAME}.${DOMAIN_NAME}
|
|
- flame.icon=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/scanopy.png
|
|
### Traefik Labels
|
|
- traefik.enable=true
|
|
- traefik.docker.network=traefik_network
|
|
- traefik.http.routers.${SERVICE_NAME}-https.tls=true
|
|
- traefik.http.routers.${SERVICE_NAME}-https.tls.certresolver=cloudflare
|
|
- traefik.http.routers.${SERVICE_NAME}-https.entrypoints=websecure
|
|
- traefik.http.routers.${SERVICE_NAME}-https.rule=Host(`${SERVICE_NAME}.${DOMAIN_NAME}`)
|
|
- traefik.http.services.${SERVICE_NAME}.loadbalancer.server.port=60072
|
|
### Monitor with uptime-kuma
|
|
- kuma.monitoring.group.name=Docker Containers
|
|
- kuma.${SERVICE_NAME}.docker.parent_name=monitoring
|
|
- kuma.${SERVICE_NAME}.docker.name=${SERVICE_NAME}
|
|
- kuma.${SERVICE_NAME}.docker.type=docker
|
|
- kuma.${SERVICE_NAME}.docker.docker_container=${SERVICE_NAME}
|
|
- kuma.${SERVICE_NAME}.docker.docker_host=1
|
|
- 'kuma.${SERVICE_NAME}.docker.tag_names=[{"name": "docker_tag"}]'
|
|
|
|
networks:
|
|
traefik_network:
|
|
external: true
|
|
scanopy:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.31.0.0/16
|
|
gateway: 172.31.0.1 |