Saving changes. Just going to stick with one docker service for storage
soaricarus_api CI / Rustfmt (pull_request) Successful in 5m54s
soaricarus_api CI / Check (pull_request) Successful in 6m4s
soaricarus_api CI / Test Suite (pull_request) Successful in 7m40s
soaricarus_api CI / build (pull_request) Successful in 3m18s
soaricarus_api CI / Clippy (pull_request) Successful in 4m41s

This commit is contained in:
2026-08-04 12:34:39 -04:00
parent b583ff8ef1
commit 6392169878
3 changed files with 78 additions and 62 deletions
+56 -62
View File
@@ -60,73 +60,67 @@ services:
# - soaricarus-network
# --- storage service ---
maze:
build:
context: ./garage/storage
dockerfile: Dockerfile
container_name: maze
garage:
image: dxflrs/garage:v2.3.0 # Use official Garage image
container_name: garage
restart: unless-stopped
environment:
# Garage configuration via environment variables
GARAGE_SERVER_BIND_ADDR: "0.0.0.0:3900"
GARAGE_SERVER_BIND_PUBLIC_ADDR: "0.0.0.0:3901"
GARAGE_S3_API_S3_REGION: "garage"
GARAGE_S3_API_BIND_ADDR: "0.0.0.0:3900"
GARAGE_S3_API_PUBLIC_BIND_ADDR: "0.0.0.0:3901"
GARAGE_S3_API_PUBLIC_ADDRS: "http://localhost:3901"
GARAGE_S3_API_ROOT_DOMAIN: "garage.local"
GARAGE_ADMIN_BIND_ADDR: "0.0.0.0:3902"
GARAGE_ADMIN_PUBLIC_BIND_ADDR: "0.0.0.0:3902"
# Cluster configuration (single node for simplicity)
GARAGE_CLUSTER_REPLICATION_MODE: "none" # Single node
GARAGE_CLUSTER_PEER_REPLICATION_STRATEGY: "ring"
# Data storage
GARAGE_DATA_DIR: "/data"
GARAGE_METADATA_DIR: "/data/meta"
# RPC configuration
GARAGE_RPC_PUBLIC_ADDR: "http://garage:3901"
GARAGE_RPC_BIND_ADDR: "0.0.0.0:3901"
GARAGE_RPC_SECRET: "${GARAGE_RPC_SECRET:-changeme12345678901234567890123456789012}" # 32+ chars
# Web Admin
GARAGE_ADMIN_TOKEN: "${GARAGE_ADMIN_TOKEN:-garage-admin-token}"
# Logging
GARAGE_LOG_LEVEL: "info"
GARAGE_S3_BUCKET: "${S3_BUCKET_NAME}:-soaricarus-storage"
volumes:
# - garage_data:/data # Persist Garage data
- ./garage.toml:/etc/garage.toml:ro # Mount config file
- shared_credentials:/data # Persist Garage data
ports:
- "3900:3900" # S3 API
- "3901:3901" # RPC for cluster communication
- "3902:3902" # S3 web interface
- "3903:3903" # Admin API
volumes:
- ./garage.toml:/etc/garage.toml:ro
# - ./garage/entrypoint.sh:/entrypoint.sh:ro
- ./garage/storage/run.sh:/run.sh:ro
- shared_credentials:/shared
- object_data:/var/lib/garage
# - ./scripts:/scripts:ro # ← ADD THIS - mount the scripts directory
env_file:
- .env
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- GARAGE_RPC_SECRET=${GARAGE_RPC_SECRET}
- BUCKET_NAME=${S3_BUCKET_NAME}
# entrypoint: ["/entrypoint.sh"]
# command: []
# healthcheck:
# test: ["CMD-SHELL", "curl -f http://localhost:3901/v0/status || exit 1"]
# test: ["CMD-SHELL", "echo 'What is to be done?'"]
# test: ["CMD-SHELL", "nc -z localhost 3900 || exit 1"]
# test: ["CMD-SHELL", "/garage status | grep -q 'Health: ok' || exit 1"]
# interval: 10s
# timeout: 5s
# retries: 5
# start_period: 30s
networks:
- soaricarus-network
maze-init:
# image: dxflrs/garage:v2.3.0
# image: docker:dind
build:
context: ./garage/init
dockerfile: Dockerfile
container_name: maze-init
depends_on:
maze:
condition: service_started
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Mount Docker socket
- shared_credentials:/shared
- object_data:/var/lib/garage
- ./garage/init/entrypoint.sh:/entrypoint.sh:ro
# - ./scripts:/scripts:ro # ← ADD THIS - mount the scripts directory
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- GARAGE_RPC_SECRET=${GARAGE_RPC_SECRET}
- BUCKET_NAME=${S3_BUCKET_NAME}
env_file:
- .env
# entrypoint: ["/bin/sh"]
# command: ["/scripts/init-garage.sh"]
restart: "no" # Run once and exit
- "3901:3901" # S3 API public
- "3902:3902" # Admin API
# entrypoint: ["/bin/bash", "-c"]
# command:
# - |
# ls /
# /garage -c /etc/garage.toml server
command: ["/garage", "-c", "/etc/garage.toml", "server"]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3900/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
- soaricarus-network
extra_hosts:
- "garage.local:127.0.0.1" # Needed for local domain resolution
# PostgreSQL Database Service
main_db: