From 51d2bcd53a1d99b49b4ecc76ec0cf8718eddcdc7 Mon Sep 17 00:00:00 2001 From: Antoine Estienne Date: Wed, 17 Sep 2025 12:01:09 +0200 Subject: [PATCH] add dockerfiles --- backend/Dockerfile | 20 ++++++++++++++++++++ backend/Procfile | 3 +++ docker-compose.yml | 22 ++++++++++++++++++++++ frontend/Dockerfile | 24 ++++++++++++++++++++++++ frontend/Procfile | 3 +++ 5 files changed, 72 insertions(+) create mode 100644 backend/Dockerfile create mode 100644 backend/Procfile create mode 100644 docker-compose.yml create mode 100644 frontend/Dockerfile create mode 100644 frontend/Procfile diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..41454b6 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,20 @@ +# syntax=docker/dockerfile:1 + +FROM rust:1.80-bullseye AS builder +WORKDIR /app + +# Cache dependencies +COPY backend/Cargo.toml backend/Cargo.lock ./ +COPY backend/src ./src +COPY backend/migrations ./migrations +RUN cargo build --release + +FROM debian:bullseye-slim AS runtime +RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* +WORKDIR /app +COPY --from=builder /app/target/release/guild-backend /usr/local/bin/guild-backend +ENV RUST_LOG=info +EXPOSE 3001 +CMD ["/usr/local/bin/guild-backend"] + + diff --git a/backend/Procfile b/backend/Procfile new file mode 100644 index 0000000..8f31395 --- /dev/null +++ b/backend/Procfile @@ -0,0 +1,3 @@ +web: guild-backend + + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..15bd88d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.9" + +services: + db: + image: postgres:16-alpine + container_name: guild-postgres + environment: + POSTGRES_DB: guild + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - "5432:5432" + volumes: + - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d guild"] + interval: 5s + timeout: 3s + retries: 10 + +volumes: + pgdata: diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..44ab79b --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,24 @@ +# syntax=docker/dockerfile:1 + +FROM node:20-alpine AS deps +WORKDIR /app +COPY frontend/package.json frontend/package-lock.json ./ +RUN npm ci + +FROM node:20-alpine AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY frontend . +# Build SSR server (output: server) using Node adapter config +RUN npm run build + +FROM node:20-alpine AS runtime +WORKDIR /app +ENV NODE_ENV=production +COPY --from=builder /app/dist ./dist +COPY --from=builder /app/package.json ./package.json +RUN npm pkg set scripts.start="node dist/server/entry.mjs" && npm pkg delete dev && npm pkg delete build || true +EXPOSE 4321 +CMD ["node", "dist/server/entry.mjs"] + + diff --git a/frontend/Procfile b/frontend/Procfile new file mode 100644 index 0000000..9741cad --- /dev/null +++ b/frontend/Procfile @@ -0,0 +1,3 @@ +web: node dist/server/entry.mjs + +