diff --git a/web-app/.gitignore b/web-app/.gitignore index a128bbe..7114b04 100644 --- a/web-app/.gitignore +++ b/web-app/.gitignore @@ -1,5 +1,6 @@ # Dependencies node_modules +.pnpm-store # Build outputs build/ diff --git a/web-app/Dockerfile b/web-app/Dockerfile index 207bf93..2bb7034 100644 --- a/web-app/Dockerfile +++ b/web-app/Dockerfile @@ -1,22 +1,26 @@ -FROM node:20-alpine AS development-dependencies-env +FROM node:24-alpine AS development-dependencies-env +RUN npm install -g corepack && corepack enable COPY . /app WORKDIR /app -RUN npm ci +RUN pnpm install --frozen-lockfile -FROM node:20-alpine AS production-dependencies-env -COPY ./package.json package-lock.json /app/ +FROM node:24-alpine AS production-dependencies-env +RUN npm install -g corepack && corepack enable +COPY ./package.json pnpm-lock.yaml /app/ WORKDIR /app -RUN npm ci --omit=dev +RUN pnpm install --frozen-lockfile --prod -FROM node:20-alpine AS build-env +FROM node:24-alpine AS build-env +RUN npm install -g corepack && corepack enable COPY . /app/ COPY --from=development-dependencies-env /app/node_modules /app/node_modules WORKDIR /app -RUN npm run build +RUN pnpm run build -FROM node:20-alpine -COPY ./package.json package-lock.json /app/ +FROM node:24-alpine +RUN npm install -g corepack && corepack enable +COPY ./package.json pnpm-lock.yaml /app/ COPY --from=production-dependencies-env /app/node_modules /app/node_modules COPY --from=build-env /app/build /app/build WORKDIR /app -CMD ["npm", "run", "start"] \ No newline at end of file +CMD ["pnpm", "run", "start"] \ No newline at end of file diff --git a/web-app/docker-compose.yml b/web-app/docker-compose.yml new file mode 100644 index 0000000..157a812 --- /dev/null +++ b/web-app/docker-compose.yml @@ -0,0 +1,15 @@ +services: + web: + image: node:24-alpine + working_dir: /app + volumes: + - .:/app + - node_modules:/app/node_modules + ports: + - "5173:5173" + command: sh -c "npm install -g corepack && corepack enable && pnpm install && pnpm run dev --host" + environment: + - NODE_ENV=development + +volumes: + node_modules: \ No newline at end of file