diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8a24acf --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +node_modules +npm-debug.log* +.DS_Store +.git +.gitignore +tmp_*.json +tmp* +data/* +!data/years.json +*.mp3 +*.wav +*.m4a +*.ogg +*.flac \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f73241 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +# Lightweight production image for the Hitstar Node app +FROM node:22-alpine + +WORKDIR /app + +# Install dependencies +COPY package*.json ./ +RUN npm ci --omit=dev || npm install --omit=dev + +# Copy app source (media lives outside via volume) +COPY . . + +ENV NODE_ENV=production \ + PORT=5173 + +EXPOSE 5173 + +CMD ["node", "server.js"] diff --git a/README.md b/README.md index 2ece4ac..aa39367 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,27 @@ # Hitstar – lokale Web-App (Prototyp) +## Docker + +Run the app in a container while using your local `data/` music folder: + +1) Build the image + +```powershell +docker compose build +``` + +2) Start the service + +```powershell +docker compose up -d +``` + +3) Open http://localhost:5173 + +Notes: +- Your local `data/` is mounted read/write at `/app/data` inside the container, so you can manage tracks on the host. +- To rebuild after changes: `docker compose build --no-cache && docker compose up -d`. + Lokales Multiplayer-Webspiel inspiriert von HITSTER. Nutzt eure MP3-Dateien im Ordner `data/`, eine Lobby mit Raum-Code sowie WebSockets für den Mehrspieler-Modus. ## Features diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ee11208 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +services: + hitstar: + build: . + image: hitstar-webapp:latest + container_name: hitstar + environment: + - NODE_ENV=production + - PORT=5173 + ports: + - "5173:5173" + volumes: + - ./data:/app/data:rw + restart: unless-stopped \ No newline at end of file