Conversation
beimnettes
left a comment
There was a problem hiding this comment.
I checked this branch locally and reviewed the changes.
The Docker setup and project structure look correct, and the application starts until required environment variables (such as JWT_SECRET) are needed. Those errors are expected locally and match the PR notes.
However, the CI checks are still failing and the branch is out of date with main. These issues should be resolved before merge.
…ion. + update Playwright tests
…gres # Conflicts: # package-lock.json
… nestjs, nextjs, and postgres services
✅ Full E2E Test Results
|
|
Docker compose builds frontend, backend, and postgres. I removed these build steps from playwright and changed the playwright_api_url to match the traefik (reverse proxy) route. I also removed the hardcoded environment configurations from playwright and github workflows, leaving a shared set of values in root to be accessed across backend, testing, and development environments. Now when app is started using Docker Compose these values are inherited. This is similar to the previous setup but does not use the // Start Docker Compose services if not already running,
// services are accessible at http://localhost (port 80) via Traefik proxy
webServer: {
command: "docker compose up -d && tail -f /dev/null",
url: "http://localhost",
reuseExistingServer: true, // Don't restart if services are already running
timeout: 240000,
},Before using Docker Compose:
The |
There was a problem hiding this comment.
Well done! I was able to successfully spin up the entire stack and verify the containerization strategy on my local machine.
Testing Highlights
- Unified Routing: Confirmed Traefik correctly handles traffic at http://localhost (Frontend) and http://localhost/api (Backend/Swagger) and e2e testing.
- Functional Flow: Successfully created a new user via Swagger and verified the login flow on the frontend - database persistence is solid.
- Verified Hot Reload is working for both services by updating a code.
I noticed package-lock.json updated due to an npm version mismatch between my host and the container. This is fine for now, but we should standardize the npm version in the Dockerfile to avoid git noise.
This reverts commit befe0c2.
✅ Full E2E Test Results
|
beimnettes
left a comment
There was a problem hiding this comment.
I reviewed this branch locally and checked the Docker setup.
The container configuration looks correct and the services start properly using Docker Compose. The routing through http://localhost and /api works as expected with Traefik.
I also saw that the E2E tests are passing, which shows the container environment works with the testing setup.
Overall this change improves the project by making the development environment more consistent and easier to run.
✅ Full E2E Test Results
|
Summary & Changes 📃
Summary
Integrates containerization standards, utilizing Docker CLI and Docker Desktop GUI. The added code changes have successfully reduced the overall occurrences of configuration drift, and deduplicated values across the tech-stack. By defining each component as an isolated containerized image, the entire project environment becomes standardized, including configuration mappings for service ↔ database credentials, reverse proxy ↔ service containers, and route prefixes ↔ backend API handlers.
This modular setup allows each service to be independently developed, tested, and maintained. By composing these services through Traefik’s reverse proxy, we ensure seamless routing and integration. As a result, the entire environment is production-ready, with consistent behavior across testing, development, and deployment stages.
Changes Made
.envfile at the application root containing database variables shared across the tech stack.Note
This configuration reflects the preferred production-style architecture, where services are containerized and routed through a reverse proxy.
What is the expected behavior?
With Docker Desktop open, we should be able to build the entire application with only 2 commands, accessing the website at:
http://localhost/→ Next.js frontendhttp://localhost/api→ NestJS backendhttp://localhost:8080→ Traefik dashboardHow to Test 🧪
linux:
windows: