51 lines
1.7 KiB
YAML
51 lines
1.7 KiB
YAML
version: '3.8'
|
|
|
|
# =============================================================================
|
|
# Verdaccio - Hybrid NPM Cache
|
|
# =============================================================================
|
|
# Purpose: Cache public npm packages + mirror @lilith/* from Forgejo
|
|
# Location: black (10.0.0.11) at npm.nasty.sh
|
|
#
|
|
# Deployment:
|
|
# scp -r deployments/docker/verdaccio black:/bigdisk/
|
|
# ssh black "cd /bigdisk/verdaccio && docker-compose up -d"
|
|
#
|
|
# Access (VPN-only):
|
|
# http://npm.nasty.sh:4873/ (via nginx proxy)
|
|
# =============================================================================
|
|
|
|
services:
|
|
verdaccio:
|
|
image: verdaccio/verdaccio:6
|
|
container_name: verdaccio
|
|
restart: unless-stopped
|
|
environment:
|
|
- VERDACCIO_PORT=4873
|
|
- VERDACCIO_PUBLIC_URL=http://npm.black.local
|
|
# Forge authentication token (passed to uplink config)
|
|
- FORGEJO_NPM_TOKEN=${FORGEJO_NPM_TOKEN}
|
|
ports:
|
|
- "4873:4873"
|
|
volumes:
|
|
# Package storage (persistent on bigdisk)
|
|
- /bigdisk/verdaccio/storage:/verdaccio/storage
|
|
# Configuration
|
|
- ./config:/verdaccio/conf
|
|
networks:
|
|
- forgejo_forgejo # Share Forgejo's network for nginx access
|
|
# Map forge.nasty.sh to Forgejo nginx container
|
|
# Forgejo's package metadata returns external URLs (forge.nasty.sh) for tarballs
|
|
# Use nginx proxy IP for proper HTTP/HTTPS routing
|
|
extra_hosts:
|
|
- "forge.black.local:172.18.0.3"
|
|
- "npm.black.local:172.18.0.3"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:4873/-/ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
networks:
|
|
forgejo_forgejo:
|
|
external: true
|