---
name: '${SLAX_NAME:-slax}'

include:
  - path: priv/docker/services/database/docker-compose.yml
  - path: priv/docker/services/otel/docker-compose.yml

services:
  slax:
    image: 'joaodubas/slax:${SLAX_TAG:-dev}'
    build:
      context: .
      target: builder
      args:
        BUILD_MIX_ENV: dev
    init: true
    restart: unless-stopped
    hostname: slax
    networks:
      - default
      - upstream
    environment:
      PGUSER: postgres
      PGPASSWORD: postgres
      PGHOST: database
    volumes:
      - './:/app'
      - 'slax_build:/app/_build'
      - 'slax_deps:/app/deps'
    labels:
      caddy: ${SLAX_DOMAIN:-slax.dubas.lan}
      caddy.0_import: base_config
      caddy.1_import: tls_config
      caddy.2_reverse_proxy: '{{ upstreams http 4000 }}'
      caddy.2_reverse_proxy.import: proxy_headers_config
    entrypoint: mix
    command: phx.server
  slax-production:
    image: 'joaodubas/slax:${SLAX_PROD_TAG:-prod}'
    build:
      context: .
    init: true
    restart: unless-stopped
    hostname: slax-prod-local
    networks:
      - upstream
    environment:
      DATABASE_URL: 'postgresql://postgres:postgres@database:5432/slax'
      SECRET_KEY_BASE: '${SLAX_PROD_SECRET_KEY_BASE:-LkNDN0Rt87ElBj2FEQGNtsdqCjkBxgOFrxh/I7OYg4ZY8uzAgKtKnRMEHnt+5SSF}'
    profiles:
      - production
    entrypoint: sleep
    command: infinity

volumes:
  slax_build: {}
  slax_deps: {}

networks:
  upstream:
    external: true
    name: proxy_upstream