mirror of
https://github.com/invariantlabs-ai/invariant-gateway.git
synced 2026-02-12 14:32:45 +00:00
113 lines
3.7 KiB
YAML
113 lines
3.7 KiB
YAML
name: invariant-gateway-test-stack
|
|
services:
|
|
traefik:
|
|
image: traefik:v2.0
|
|
container_name: "invariant-gateway-test-traefik"
|
|
command:
|
|
- --providers.docker=true
|
|
# Enable the API handler in insecure mode,
|
|
# which means that the Traefik API will be available directly
|
|
# on the entry point named traefik.
|
|
- --api.insecure=true
|
|
# Define Traefik entry points to port [80] for http and port [443] for https.
|
|
- --entrypoints.invariant-gateway-web-test.address=0.0.0.0:80
|
|
networks:
|
|
- invariant-gateway-web-test
|
|
ports:
|
|
- '${PORT_HTTP:-80}:80'
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.traefik-http.entrypoints=invariant-gateway-web-test"
|
|
|
|
invariant-gateway:
|
|
container_name: invariant-gateway-test
|
|
build:
|
|
context: ${GATEWAY_ROOT_PATH}
|
|
dockerfile: ${GATEWAY_ROOT_PATH}/Dockerfile.gateway
|
|
depends_on:
|
|
app-api:
|
|
condition: service_healthy
|
|
working_dir: /srv/gateway
|
|
env_file:
|
|
- .env.test
|
|
environment:
|
|
- DEV_MODE=true
|
|
- GUARDRAILS_FILE_PATH=${GUARDRAILS_FILE_PATH:+/srv/resources/guardrails.py}
|
|
- ${INVARIANT_API_KEY:+INVARIANT_API_KEY=${INVARIANT_API_KEY}}
|
|
volumes:
|
|
- type: bind
|
|
source: ${GATEWAY_ROOT_PATH}/gateway
|
|
target: /srv/gateway
|
|
- type: bind
|
|
source: ${GUARDRAILS_FILE_PATH:-/dev/null}
|
|
target: /srv/resources/guardrails.py
|
|
networks:
|
|
- invariant-gateway-web-test
|
|
ports: []
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.invariant-gateway-api.rule=(Host(`localhost`) && PathPrefix(`/api/v1/gateway/`)) || (Host(`127.0.0.1`) && PathPrefix(`/api/v1/gateway/`))"
|
|
- "traefik.http.routers.invariant-gateway-api.entrypoints=invariant-gateway-web-test"
|
|
- "traefik.http.services.invariant-gateway-api.loadbalancer.server.port=8000"
|
|
- "traefik.docker.network=invariant-gateway-web-test"
|
|
healthcheck:
|
|
test: curl -X GET -I http://localhost:8000/api/v1/gateway/health --fail
|
|
interval: 1s
|
|
timeout: 5s
|
|
|
|
app-api:
|
|
container_name: invariant-gateway-test-explorer-app-api
|
|
image: ghcr.io/invariantlabs-ai/explorer/app-api:latest
|
|
pull_policy: always
|
|
platform: linux/amd64
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
working_dir: /srv/app
|
|
env_file:
|
|
- .env.test
|
|
environment:
|
|
- PROJECTS_DIR=/srv/projects
|
|
- KEYCLOAK_CLIENT_ID_SECRET=local-does-not-use-keycloak
|
|
- TZ=Europe/Berlin
|
|
- DEV_MODE=true
|
|
- APP_NAME=explorer-test
|
|
- CONFIG_FILE=/config/explorer.config.yml
|
|
- PORT_HTTP=8000
|
|
- PORT_API=80
|
|
networks:
|
|
- internal
|
|
- invariant-gateway-web-test
|
|
volumes:
|
|
- /tmp/invariant-gateway-test/configs/explorer.test.yml:/config/explorer.config.yml
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.invariant-test-api.rule=(Host(`localhost`) && PathPrefix(`/api/`)) || (Host(`127.0.0.1`) && PathPrefix(`/api/`))"
|
|
- "traefik.http.routers.invariant-test-api.entrypoints=invariant-gateway-web-test"
|
|
- "traefik.http.services.invariant-test-api.loadbalancer.server.port=8000"
|
|
- "traefik.docker.network=invariant-gateway-web-test"
|
|
healthcheck:
|
|
test: curl -X GET -I http://localhost:8000/api/v1/ --fail
|
|
interval: 1s
|
|
timeout: 5s
|
|
|
|
database:
|
|
container_name: invariant-gateway-test-database
|
|
image: postgres:16
|
|
env_file:
|
|
- .env.test
|
|
networks:
|
|
- internal
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
networks:
|
|
invariant-gateway-web-test:
|
|
external: true
|
|
internal:
|