95 lines
2.2 KiB
YAML
95 lines
2.2 KiB
YAML
# Full acrate stack, running on a single machine for experimental purposes
|
|
|
|
x-config:
|
|
ingress_config_dir: &ingress_config_dir "./config/caddy"
|
|
|
|
name: "acrate"
|
|
|
|
volumes:
|
|
ingress_data:
|
|
ingress_config:
|
|
postgres_data:
|
|
|
|
services:
|
|
# Public ingress node
|
|
ingress:
|
|
image: "caddy"
|
|
restart: "unless-stopped"
|
|
cap_add:
|
|
- "NET_ADMIN"
|
|
ports:
|
|
- protocol: "tcp"
|
|
target: 80
|
|
published: 80
|
|
- protocol: "tcp"
|
|
target: 443
|
|
published: 443
|
|
- protocol: "udp"
|
|
target: 443
|
|
published: 443
|
|
volumes:
|
|
- type: "volume"
|
|
source: "ingress_data"
|
|
target: "/data"
|
|
- type: "volume"
|
|
source: "ingress_config"
|
|
target: "/config"
|
|
- type: "bind"
|
|
source: *ingress_config_dir
|
|
target: "/etc/caddy"
|
|
|
|
# Main database
|
|
database:
|
|
image: "postgres"
|
|
restart: "unless-stopped"
|
|
environment:
|
|
# Make sure the password is the same for both client and server tools
|
|
POSTGRES_PASSWORD: &postgres_password "acrate"
|
|
PGUSER: "postgres"
|
|
PGPASS: *postgres_password
|
|
volumes:
|
|
- type: "volume"
|
|
source: "postgres_data"
|
|
target: "/var/lib/postgresql/data"
|
|
ports:
|
|
# FIXME: for development purposes only
|
|
- protocol: "tcp"
|
|
host_ip: "127.0.0.1"
|
|
target: 5432
|
|
published: 5432
|
|
expose:
|
|
- 5432
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready"]
|
|
|
|
# Migrations
|
|
migrate:
|
|
build:
|
|
dockerfile: "./Dockerfile"
|
|
additional_contexts:
|
|
- "source=.."
|
|
target: "migrate"
|
|
environment:
|
|
ACRATE_DATABASE_DATABASE_URL: &database_url "postgres:///postgres?host=database&user=postgres&password=acrate" # TODO: Split parameters off to their own envvars
|
|
depends_on:
|
|
database:
|
|
condition: "service_healthy"
|
|
|
|
# Resource descriptor server
|
|
rdserver:
|
|
build:
|
|
dockerfile: "./Dockerfile"
|
|
additional_contexts:
|
|
- "source=.."
|
|
target: "rdserver"
|
|
restart: "unless-stopped"
|
|
environment:
|
|
ACRATE_WEBFINGER_BIND_ADDRESS: "0.0.0.0:80"
|
|
ACRATE_WEBFINGER_DATABASE_URL: *database_url
|
|
expose:
|
|
- 80
|
|
depends_on:
|
|
database:
|
|
condition: "service_healthy"
|
|
migrate:
|
|
condition: "service_completed_successfully"
|