mirror of
https://github.com/coleam00/Archon
synced 2026-04-21 21:47:53 +00:00
- Update Dockerfile.user.example image refs (dynamous → coleam00/archon) - Update docker-compose.yml image name (remote-coding-agent → archon) - Fix clone URL and dir name in Book of Archon first-five-minutes - Update prompt-builder example project name - Add elevator pitch to README intro - Fix all README doc links to point to archon.diy (old docs/ dir was deleted) - Add install scripts to docs-web public dir for GitHub Pages serving Relates to #980 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
131 lines
4.3 KiB
YAML
131 lines
4.3 KiB
YAML
# =============================================================================
|
|
# Archon - Docker Compose
|
|
# =============================================================================
|
|
#
|
|
# Usage:
|
|
# docker compose up -d # App with SQLite (default)
|
|
# docker compose --profile with-db up -d # App + local PostgreSQL
|
|
# docker compose --profile cloud up -d # App + Caddy HTTPS reverse proxy
|
|
# docker compose --profile with-db --profile cloud up -d # All three
|
|
#
|
|
# Database:
|
|
# SQLite is the default (zero config). For PostgreSQL, either:
|
|
# - Use --profile with-db for a local container, and set in .env:
|
|
# DATABASE_URL=postgresql://postgres:postgres@postgres:5432/remote_coding_agent
|
|
# - Or point DATABASE_URL to an external database (Supabase, Neon, etc.)
|
|
#
|
|
# Data:
|
|
# Set ARCHON_DATA in .env to control where Archon stores data on the host:
|
|
# ARCHON_DATA=/opt/archon-data # Any absolute path on the host
|
|
# Default: Docker-managed volume (archon_data)
|
|
#
|
|
# Cloud (HTTPS):
|
|
# 1. Set DOMAIN=archon.example.com in .env
|
|
# 2. Point DNS A record to your server
|
|
# 3. Add --profile cloud — Caddy handles TLS automatically via Let's Encrypt
|
|
#
|
|
|
|
services:
|
|
# -------------------------------------------------------------------------
|
|
# App (always runs)
|
|
# -------------------------------------------------------------------------
|
|
app:
|
|
build: .
|
|
image: archon
|
|
env_file: .env
|
|
environment:
|
|
ARCHON_DOCKER: "true"
|
|
ports:
|
|
- "${PORT:-3000}:${PORT:-3000}"
|
|
volumes:
|
|
- ${ARCHON_DATA:-archon_data}:/.archon
|
|
networks:
|
|
- archon-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:${PORT:-3000}/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 15s
|
|
dns:
|
|
- 8.8.8.8
|
|
- 8.8.4.4
|
|
sysctls:
|
|
- net.ipv6.conf.all.disable_ipv6=1
|
|
|
|
# -------------------------------------------------------------------------
|
|
# PostgreSQL (optional: --profile with-db)
|
|
# Set DATABASE_URL in .env to connect the app to this container.
|
|
# -------------------------------------------------------------------------
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
profiles: ["with-db"]
|
|
environment:
|
|
POSTGRES_DB: remote_coding_agent
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./migrations/000_combined.sql:/docker-entrypoint-initdb.d/000_combined.sql:ro
|
|
- ./migrations:/migrations:ro
|
|
ports:
|
|
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
|
|
networks:
|
|
- archon-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Caddy reverse proxy with automatic HTTPS (optional: --profile cloud)
|
|
# Requires DOMAIN set in .env. See Caddyfile for configuration.
|
|
# -------------------------------------------------------------------------
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
profiles: ["cloud"]
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "443:443/udp"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
networks:
|
|
- archon-network
|
|
depends_on:
|
|
app:
|
|
condition: service_healthy
|
|
|
|
# -------------------------------------------------------------------------
|
|
# Auth service — form-based login for Caddy forward_auth (optional: --profile auth)
|
|
# Use alongside --profile cloud: docker compose --profile cloud --profile auth up -d
|
|
# Requires AUTH_USERNAME, AUTH_PASSWORD_HASH, COOKIE_SECRET in .env.
|
|
# See docs/docker.md for setup instructions.
|
|
# -------------------------------------------------------------------------
|
|
auth-service:
|
|
build: ./auth-service
|
|
profiles: ["auth"]
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
environment:
|
|
AUTH_PORT: "${AUTH_SERVICE_PORT:-9000}"
|
|
expose:
|
|
- "${AUTH_SERVICE_PORT:-9000}"
|
|
networks:
|
|
- archon-network
|
|
|
|
volumes:
|
|
archon_data:
|
|
postgres_data:
|
|
caddy_data:
|
|
caddy_config:
|
|
|
|
networks:
|
|
archon-network:
|
|
driver: bridge
|