services: backend-vuln: build: context: ./backend dockerfile: Dockerfile args: AIOHTTP_VERSION: 3.14.1 container_name: backend-vuln environment: - READ_BODY=false - BODY_AUDIT=true - LOG_PATH=/logs/backend.log - SERVER_PORT=8080 volumes: - ./logs:/logs networks: - lab-net backend-vuln-read: build: context: ./backend dockerfile: Dockerfile args: AIOHTTP_VERSION: 3.14.1 container_name: backend-vuln-read environment: - READ_BODY=true - LOG_PATH=/logs/backend-read.log - SERVER_PORT=8080 volumes: - ./logs:/logs networks: - lab-net backend-patched: build: context: ./backend dockerfile: Dockerfile args: AIOHTTP_VERSION: 3.14.2 container_name: backend-patched environment: - READ_BODY=false - BODY_AUDIT=true - LOG_PATH=/logs/backend-patched.log - SERVER_PORT=8080 volumes: - ./logs:/logs networks: - lab-net nginx-default: build: context: ./frontend dockerfile: Dockerfile args: NGINX_CONF: default.conf container_name: nginx-default ports: - "127.0.0.1:8080:80" volumes: - ./logs:/logs depends_on: - backend-vuln networks: - lab-net nginx-upgrade: build: context: ./frontend dockerfile: Dockerfile args: NGINX_CONF: upgrade.conf container_name: nginx-upgrade ports: - "127.0.0.1:8081:80" volumes: - ./logs:/logs depends_on: - backend-vuln networks: - lab-net nginx-strip: build: context: ./frontend dockerfile: Dockerfile args: NGINX_CONF: strip.conf container_name: nginx-strip ports: - "127.0.0.1:8082:80" volumes: - ./logs:/logs depends_on: - backend-vuln networks: - lab-net attacker: build: context: ./attacker dockerfile: Dockerfile container_name: attacker volumes: - ./attacker/scripts:/scripts - ./logs:/logs depends_on: - backend-vuln - backend-vuln-read - backend-patched - nginx-default - nginx-upgrade - nginx-strip networks: - lab-net profiles: - manual stdin_open: true tty: true networks: lab-net: driver: bridge