docker-compose.e2e.yml
Rama master · réplica de lectura del repositorio original.
# End-to-end stack: server (web UI embedded) + the Playwright runner, all on an
# internal network with NO host ports — no collisions with a dev stack.
# Usage:
# docker compose -f docker-compose.e2e.yml up --build --abort-on-container-exit
# docker compose -f docker-compose.e2e.yml down -v
services:
server:
build:
context: ./server
dockerfile: Dockerfile
target: release
additional_contexts:
root: .
environment:
NEXUL_DB_PATH: /data/nexul.db
NEXUL_AUTH_SECRET: dev-secret-rotate-me
NEXUL_LOG_LEVEL: warn
NEXUL_SPA_ORIGIN: http://localhost
volumes:
- e2e-data:/data
networks:
- e2e-net
automations:
build:
context: ./automations
dockerfile: Dockerfile
additional_contexts:
root: .
environment:
NEXUL_SERVER_URL: http://server:8080
NEXUL_AUTOMATIONS_HOST_NAME: instance
NEXUL_CREDENTIAL_FILE: /state/credential
# First start enrolls with the code the server writes at boot.
NEXUL_ENROLL_CODE_FILE: /data/enroll/automations-instance
NEXUL_LOG_LEVEL: warn
volumes:
- e2e-data:/data:ro
- e2e-automations-state:/state
networks:
- e2e-net
depends_on:
- server
# A real runner against the host docker daemon: it claims deploy jobs and
# executes them for real (docker pull / docker run via the socket). Deployed
# containers join the e2e-net docker network, so specs verify them by
# container name without publishing any host port.
runner:
build:
context: ./runner
dockerfile: Dockerfile
target: release
additional_contexts:
root: .
environment:
NEXUL_SERVER_URL: http://server:8080
NEXUL_RUNNER_NAME: instance
NEXUL_CREDENTIAL_FILE: /state/credential
# First start enrolls with the code the server writes at boot.
NEXUL_ENROLL_CODE_FILE: /data/enroll/runner-instance
NEXUL_GIT_TOKEN: e2e-dummy
NEXUL_LOG_LEVEL: warn
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- e2e-data:/data:ro
- e2e-runner-state:/state
networks:
- e2e-net
depends_on:
- server
e2e:
build:
context: ./web
dockerfile: e2e.Dockerfile
environment:
NEXUL_BASE_URL: http://server:8080
NEXUL_AUTH_SECRET: dev-secret-rotate-me
NEXUL_E2E_DB: /data/nexul.db
volumes:
# live-mount the web source so spec/config edits don't need a rebuild;
# node_modules is preserved via a named volume seeded from the image
- ./web:/e2e
- e2e-node-modules:/e2e/node_modules
- e2e-data:/data
networks:
- e2e-net
depends_on:
- server
- runner
networks:
e2e-net:
name: e2e-net
volumes:
e2e-data:
e2e-node-modules:
e2e-automations-state:
e2e-runner-state: