tirocinio-canali-steffo-acrate/acrate_docker/compose.yml

95 lines
2.1 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_URL: &database_url "postgres:///postgres?host=database&user=postgres&password=acrate"
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_DATABASE_URL: *database_url
expose:
- 80
depends_on:
database:
condition: "service_healthy"
migrate:
condition: "service_completed_successfully"