32 lines
1.6 KiB
Markdown
32 lines
1.6 KiB
Markdown
# Docker Containerization and Build Fixes
|
|
|
|
## Objectives
|
|
- Create a Dockerfile to package the application as a monolith (Node.js + React).
|
|
- Fix TypeScript build errors preventing successful compilation.
|
|
- Verify the build process.
|
|
|
|
## Changes
|
|
- **Dockerfile**: Created multi-stage build using `node:20-alpine`.
|
|
- Installs dependencies.
|
|
- Builds frontend.
|
|
- Prunes dev dependencies.
|
|
- **Server Entry (`src/server/index.ts`)**: Added logic to serve static `dist` files and handle client-side routing in production.
|
|
- **Package.json**: Moved `tsx` to dependencies and updated `start` script.
|
|
- **Code Fixes**: Removed unused variables in client and server code used to satisfy strict TypeScript rules:
|
|
- `DeckBuilderView.tsx`: Removed unused `payload`.
|
|
- `DraftView.tsx`: Removed unused `CardComponent`.
|
|
- `GameView.tsx`: Removed unused `myCommand`, `oppGraveyard`.
|
|
- `DraftManager.ts`: Removed unused `numPlayers`, `cardIndex`.
|
|
- `GameManager.ts`: Renamed unused args in `shuffleLibrary`.
|
|
- **Helm Chart**: Created a complete Helm chart configuration in `helm/mtg-draft-maker`:
|
|
- `Chart.yaml`: Defined chart metadata.
|
|
- `values.yaml`: Configured defaults (Image `git.commandware.com/services/mtg-online-drafter:main`, Port 3000).
|
|
- `templates/`: Added Deployment, Service, Ingress, and ServiceAccount manifests.
|
|
- **Persistence**: Added configuration to mount a Persistent Volume Claim (PVC) at `/app/server/public/cards` for storing cached images. Disabled by default.
|
|
- Linted successfully.
|
|
|
|
## Status
|
|
- Docker build successful (`docker build -t mtg-draft-maker .`).
|
|
- Helm chart created and linted.
|
|
- Ready for K8s deployment.
|