Files
invariant-gateway/tests/integration/docker-compose.test.yml

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: