add docker health checks

This commit is contained in:
2025-07-17 00:38:10 +01:00
parent 7dc46b6ad0
commit d49025a6b4
6 changed files with 42 additions and 7 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.env

8
Justfile Normal file
View File

@ -0,0 +1,8 @@
run *ARGS: build
docker compose up {{ARGS}}
stop:
docker compose down
build:
docker compose build

1
backend/.gitignore vendored
View File

@ -1 +1,2 @@
target/ target/
vendor/busybox_WGET

View File

@ -21,7 +21,10 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry \
cargo build --release --bin nuchat --target-dir=/app/target cargo build --release --bin nuchat --target-dir=/app/target
FROM gcr.io/distroless/cc AS runtime FROM gcr.io/distroless/cc AS runtime
WORKDIR /app
COPY --from=builder /app/target/release/nuchat ./nuchat
ENTRYPOINT [ "./nuchat", "--host 0.0.0.0" ] ADD --chmod=a+x vendor/busybox_WGET /usr/bin/wget
COPY --from=builder /app/target/release/nuchat /usr/bin/
# HEALTHCHECK --interval=5s --retries=1 --timeout=5s CMD ["wget", "-q", "--spider", "http://localhost:7000/healthcheck
ENTRYPOINT [ "nuchat", "--host", "0.0.0.0" ]

View File

@ -3,10 +3,28 @@ services:
build: ./ui build: ./ui
ports: ports:
- "3000:3000" - "3000:3000"
depends_on:
backend:
condition: service_started
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://0.0.0.0:3000"]
interval: 1s
retries: 3
timeout: 5s
backend: backend:
build: ./backend build: ./backend
ports: ports:
- "7000:7000" - "7000:7000"
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:7000/healthcheck"]
interval: 1s
retries: 3
timeout: 5s
db: db:
image: postgres:17-alpine image: postgres:17-alpine
restart: unless-stopped restart: unless-stopped
@ -14,8 +32,11 @@ services:
- "5432:5432" - "5432:5432"
environment: environment:
POSTGRES_DB: nuchat POSTGRES_DB: nuchat
POSTGRES_USER: postgres healthcheck:
POSTGRES_PASSWORD: postgres test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d nuchat"]
interval: 1s
retries: 3
timeout: 5s
volumes: volumes:
- db-data:/var/lib/postgresql/data - db-data:/var/lib/postgresql/data

View File

@ -1,4 +1,4 @@
FROM node:24-slim AS base FROM node:24-alpine AS base
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
@ -24,8 +24,9 @@ FROM base AS runner
COPY --from=prod /app/node_modules /app/node_modules COPY --from=prod /app/node_modules /app/node_modules
COPY --from=build /app/build build/ COPY --from=build /app/build build/
EXPOSE 3000
ENV PORT=3000
ENV NODE_ENV=production ENV NODE_ENV=production
EXPOSE $PORT
CMD ["node", "build"] CMD ["node", "build"]