Skip to content
Snippets Groups Projects
docker-compose.yml 3.1 KiB
Newer Older
Arie Peterson's avatar
Arie Peterson committed
version: "3"
Maarten de Waard's avatar
Maarten de Waard committed
services:
Arie Peterson's avatar
Arie Peterson committed
  frontend:
    build:
      context: ./frontend
    env_file: ./frontend/local.env
    volumes:
      - ./frontend/src:/home/node/app/src
      - ./frontend/public:/home/node/app/public
Arie Peterson's avatar
Arie Peterson committed
    ports:
      - "3000:3000"
    command: "yarn start --watch --verbose"
Maarten de Waard's avatar
Maarten de Waard committed
  stackspin_proxy:
    image: nginx:1.25.2
Maarten de Waard's avatar
Maarten de Waard committed
    ports:
      - "8081:8081"
    volumes:
Arie Peterson's avatar
Arie Peterson committed
      - ./backend/proxy/default.conf:/etc/nginx/conf.d/default.conf
Maarten de Waard's avatar
Maarten de Waard committed
    depends_on:
      - kube_port_kratos_public
      - flask_app
  flask_app:
Arie Peterson's avatar
Arie Peterson committed
    build:
      context: ./backend
Maarten de Waard's avatar
Maarten de Waard committed
    environment:
      - FLASK_APP=app.py
      - FLASK_ENV=development
      - HYDRA_CLIENT_ID=dashboard-local

      # Domain-specific URL settings
      - HYDRA_AUTHORIZATION_BASE_URL=https://sso.$DOMAIN/oauth2/auth
      - TOKEN_URL=https://sso.$DOMAIN/oauth2/token
      - HYDRA_PUBLIC_URL=https://sso.$DOMAIN

      # Local path overrides
Arie Peterson's avatar
Arie Peterson committed
      - DASHBOARD_URL=http://localhost:3000
Maarten de Waard's avatar
Maarten de Waard committed
      - KRATOS_PUBLIC_URL=http://stackspin_proxy:8081/kratos
      - KRATOS_ADMIN_URL=http://kube_port_kratos_admin:8000
      - HYDRA_ADMIN_URL=http://kube_port_hydra_admin:4445
      - LOGIN_PANEL_URL=http://stackspin_proxy:8081/web/
      - DATABASE_URL=mysql+pymysql://stackspin:$DATABASE_PASSWORD@kube_port_mysql/stackspin

      # ENV variables that are deployment-specific
      - SECRET_KEY=$FLASK_SECRET_KEY
      - HYDRA_CLIENT_SECRET=$HYDRA_CLIENT_SECRET
      - KUBECONFIG=/.kube/config

      # Disable loading config from the service account
      - LOAD_INCLUSTER_CONFIG=false
Maarten de Waard's avatar
Maarten de Waard committed
    ports:
      - "5000:5000"
    user: "${KUBECTL_UID}:${KUBECTL_GID}"
Maarten de Waard's avatar
Maarten de Waard committed
    volumes:
Arie Peterson's avatar
Arie Peterson committed
      - ./backend:/app
      - "$KUBECONFIG:/.kube/config"
Maarten de Waard's avatar
Maarten de Waard committed
    depends_on:
      - kube_port_mysql
    entrypoint: ["bash", "-c", "flask run --host $$(hostname -i)"]
  kube_port_kratos_admin:
    image: bitnami/kubectl:1.27.5
Maarten de Waard's avatar
Maarten de Waard committed
    user: "${KUBECTL_UID}:${KUBECTL_GID}"
    expose:
      - 8000
    volumes:
      - "$KUBECONFIG:/.kube/config"
    entrypoint:
      [
        "bash",
        "-c",
        "kubectl -n stackspin port-forward --address $$(hostname -i) service/kratos-admin 8000:80",
      ]
Maarten de Waard's avatar
Maarten de Waard committed
  kube_port_hydra_admin:
    image: bitnami/kubectl:1.27.5
Maarten de Waard's avatar
Maarten de Waard committed
    user: "${KUBECTL_UID}:${KUBECTL_GID}"
    expose:
      - 4445
    volumes:
      - "$KUBECONFIG:/.kube/config"
    entrypoint:
      [
        "bash",
        "-c",
        "kubectl -n stackspin port-forward --address $$(hostname -i) service/hydra-admin 4445:4445",
      ]
Maarten de Waard's avatar
Maarten de Waard committed
  kube_port_kratos_public:
    image: bitnami/kubectl:1.27.5
Maarten de Waard's avatar
Maarten de Waard committed
    user: "${KUBECTL_UID}:${KUBECTL_GID}"
    ports:
      - "8080:8080"
    expose:
      - 8080
    volumes:
      - "$KUBECONFIG:/.kube/config"
    entrypoint:
      [
        "bash",
        "-c",
        "kubectl -n stackspin port-forward --address 0.0.0.0 service/kratos-public 8080:80",
      ]
Maarten de Waard's avatar
Maarten de Waard committed
  kube_port_mysql:
    image: bitnami/kubectl:1.27.5
Maarten de Waard's avatar
Maarten de Waard committed
    user: "${KUBECTL_UID}:${KUBECTL_GID}"
    expose:
      - 3306
    volumes:
      - "$KUBECONFIG:/.kube/config"
    entrypoint:
      [
        "bash",
        "-c",
        "kubectl -n stackspin port-forward --address $$(hostname -i) service/single-sign-on-database-mariadb 3306:3306",
      ]