# E2E 전용 임시 스택 — 운영과 완전히 격리(별도 프로젝트명 mirime2e, 별도 네트워크, 휘발성 DB). # 운영 DB/컨테이너는 절대 건드리지 않는다. E2E가 끝나면 통째로 내려간다(down -v). # # 학습 포인트: E2E는 "진짜 같은 환경"이되 "버려도 되는 환경"이라야 한다. # - Postgres 데이터는 tmpfs(메모리)에 둬 매 실행 깨끗하게 시작하고 흔적을 안 남긴다. # - 백엔드 힙을 256MB로 제한해(작은 인스턴스에서 운영과 공존) 자원을 아낀다. # - 멘토 초기 비밀번호를 알려진 값으로 고정해 E2E가 로그인할 수 있게 한다. name: mirime2e services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: mirim POSTGRES_USER: mirim POSTGRES_PASSWORD: e2epass tmpfs: - /var/lib/postgresql/data # 휘발성 — 매 실행 새 DB, 디스크에 안 남음 healthcheck: test: ["CMD-SHELL", "pg_isready -U mirim"] interval: 4s timeout: 5s retries: 15 backend: build: ../backend environment: DB_HOST: postgres DB_PORT: 5432 DB_NAME: mirim DB_USER: mirim DB_PASSWORD: e2epass COOKIE_SECURE: "false" # 평문 HTTP라 secure 쿠키는 꺼야 로그인된다 LOG_LEVEL: INFO MENTOR_INITIAL_PASSWORD: e2e-mentor-pass JAVA_TOOL_OPTIONS: "-Xmx256m" # 작은 인스턴스에서 운영과 공존하도록 힙 제한 depends_on: postgres: condition: service_healthy # 프론트 빌드 결과물을 webroot 볼륨에 복사(운영과 동일한 방식) frontend-build: build: ../frontend volumes: - webroot:/out caddy: image: caddy:2-alpine ports: - "8899:80" # 호스트 8899 → E2E 사이트(운영 80/443과 안 겹침) volumes: - ./Caddyfile.e2e:/etc/caddy/Caddyfile:ro - webroot:/srv:ro depends_on: - backend - frontend-build volumes: webroot: