diff --git a/client/package.json b/client/package.json index bc98069..8f1d8c4 100644 --- a/client/package.json +++ b/client/package.json @@ -3,7 +3,7 @@ "private": true, "scripts": { "build": "nuxt build", - "dev": "nuxt dev", + "dev": "nuxt dev --port=4000", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f067f89 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.9' + +services: + server: + container_name: binge-at-home-server + build: + context: ./server + dockerfile: ../docker/server/Dockerfile + ports: + - "8000:8000" + + client: + container_name: binge-at-home-client + build: + context: ./client + dockerfile: ../docker/client/Dockerfile + ports: + - "4000:4000" + environment: + - PORT=4000 + depends_on: + - server \ No newline at end of file diff --git a/docker/client/Dockerfile b/docker/client/Dockerfile new file mode 100644 index 0000000..d5f49c7 --- /dev/null +++ b/docker/client/Dockerfile @@ -0,0 +1,20 @@ +FROM node:20.2.0-bullseye-slim as builder + +WORKDIR /app +COPY . ./ + +RUN npm ci --no-audit +RUN npm run build + +FROM node:20.2.0-bullseye-slim + +WORKDIR /app + +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/.output ./ + +# clean install dependencies, no devDependencies, no prepare script +RUN npm ci --omit=dev --ignore-scripts --no-audit --loglevel verbose + +EXPOSE 3000 +CMD ["node", "./server/index.mjs"] diff --git a/docker/server/Dockerfile b/docker/server/Dockerfile new file mode 100644 index 0000000..1eee863 --- /dev/null +++ b/docker/server/Dockerfile @@ -0,0 +1,17 @@ +FROM lukemathwalker/cargo-chef:latest-rust-1-alpine AS chef +WORKDIR /app + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /app/recipe.json recipe.json +RUN cargo chef cook --release --recipe-path recipe.json +COPY . . +RUN cargo build --release --bin binge-at-home + +FROM debian:bullseye AS runtime +WORKDIR /app +COPY --from=builder /app/target/release/binge-at-home /usr/local/bin +ENTRYPOINT ["/usr/local/bin/binge-at-home"]