Docker Deployment
Docker Deployment
Section titled “Docker Deployment”Deploy vcpkg-harbor using Docker for easy container orchestration.
Quick Start
Section titled “Quick Start”Using Docker Compose
Section titled “Using Docker Compose”The recommended way to deploy vcpkg-harbor with all dependencies:
# Clone the repositorygit clone https://github.com/rennerdo30/vcpkg-harbor.gitcd vcpkg-harbor
# Start servicesdocker-compose up -dThis starts:
- vcpkg-harbor on port 15151
- MinIO on ports 9000 (API) and 9001 (Console)
Using Docker Only
Section titled “Using Docker Only”# Pull the imagedocker pull ghcr.io/rennerdo30/vcpkg-harbor:latest
# Run with filesystem storagedocker run -d \ -p 15151:15151 \ -v vcpkg-cache:/app/cache \ -e VCPKG_STORAGE_TYPE=filesystem \ -e VCPKG_STORAGE_PATH=/app/cache \ ghcr.io/rennerdo30/vcpkg-harbor:latestDocker Compose Configuration
Section titled “Docker Compose Configuration”Full docker-compose.yml example:
version: '3.8'
services: vcpkg-harbor: image: ghcr.io/rennerdo30/vcpkg-harbor:latest ports: - "15151:15151" environment: - VCPKG_SERVER_HOST=0.0.0.0 - VCPKG_SERVER_PORT=15151 - VCPKG_STORAGE_TYPE=minio - VCPKG_MINIO_ENDPOINT=minio:9000 - VCPKG_MINIO_ACCESS_KEY=minioadmin - VCPKG_MINIO_SECRET_KEY=minioadmin - VCPKG_MINIO_BUCKET=vcpkg-harbor - VCPKG_LOG_JSON=true volumes: - ./logs:/app/logs depends_on: minio: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:15151/health"] interval: 30s timeout: 10s retries: 3
minio: image: minio/minio ports: - "9000:9000" - "9001:9001" volumes: - minio_data:/data environment: - MINIO_ROOT_USER=minioadmin - MINIO_ROOT_PASSWORD=minioadmin command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 10s retries: 3
volumes: minio_data:Production Configuration
Section titled “Production Configuration”With External S3
Section titled “With External S3”version: '3.8'
services: vcpkg-harbor: image: ghcr.io/rennerdo30/vcpkg-harbor:latest ports: - "15151:15151" environment: - VCPKG_STORAGE_TYPE=s3 - VCPKG_S3_BUCKET=my-vcpkg-cache - VCPKG_S3_REGION=us-west-2 - VCPKG_AUTH_ENABLED=true - VCPKG_AUTH_TYPE=token - VCPKG_AUTH_TOKEN=${VCPKG_AUTH_TOKEN} - VCPKG_LOG_JSON=true restart: unless-stoppedWith TLS Termination
Section titled “With TLS Termination”Use a reverse proxy like nginx or Traefik:
version: '3.8'
services: traefik: image: traefik:v2.10 command: - "--providers.docker=true" - "--entrypoints.websecure.address=:443" ports: - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./certs:/certs
vcpkg-harbor: image: ghcr.io/rennerdo30/vcpkg-harbor:latest labels: - "traefik.enable=true" - "traefik.http.routers.vcpkg.rule=Host(`vcpkg-cache.example.com`)" - "traefik.http.routers.vcpkg.entrypoints=websecure" - "traefik.http.routers.vcpkg.tls=true"Building Custom Images
Section titled “Building Custom Images”FROM ghcr.io/rennerdo30/vcpkg-harbor:latest
# Add custom configurationCOPY .env /app/.env
# Add custom static filesCOPY custom-logo.png /app/static/Health Checks
Section titled “Health Checks”The container includes a health check that verifies:
- The HTTP server is responding
- The
/healthendpoint returns success
Configure health check timing in your orchestrator as needed.