Add Docker deployment for docs site at gr-apollo.l.warehack.ing
Multi-stage Dockerfile: node:22-slim build → caddy:2-alpine serve. caddy-docker-proxy labels for automatic TLS + reverse proxy. Profiles: prod (Caddy static) and dev (Astro HMR with volume mounts).
This commit is contained in:
parent
9dc52d1a5b
commit
db14b85633
8
docs/.dockerignore
Normal file
8
docs/.dockerignore
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.astro/
|
||||||
|
.git/
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
Makefile
|
||||||
|
docker-compose.yml
|
||||||
2
docs/.env.example
Normal file
2
docs/.env.example
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
COMPOSE_PROJECT=gr-apollo-docs
|
||||||
|
DOMAIN=gr-apollo.l.warehack.ing
|
||||||
7
docs/Caddyfile
Normal file
7
docs/Caddyfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
:80 {
|
||||||
|
root * /srv
|
||||||
|
file_server
|
||||||
|
encode gzip zstd
|
||||||
|
header Cache-Control "public, max-age=3600"
|
||||||
|
try_files {path} {path}/ /404.html
|
||||||
|
}
|
||||||
17
docs/Dockerfile
Normal file
17
docs/Dockerfile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Stage 1: Install dependencies
|
||||||
|
FROM node:22-slim AS deps
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
# Stage 2: Build static site
|
||||||
|
FROM deps AS build
|
||||||
|
COPY . .
|
||||||
|
ENV ASTRO_TELEMETRY_DISABLED=1
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Stage 3: Serve with Caddy
|
||||||
|
FROM caddy:2-alpine
|
||||||
|
COPY --from=build /app/dist /srv
|
||||||
|
COPY Caddyfile /etc/caddy/Caddyfile
|
||||||
|
EXPOSE 80
|
||||||
18
docs/Makefile
Normal file
18
docs/Makefile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.PHONY: up down logs restart dev
|
||||||
|
|
||||||
|
up:
|
||||||
|
docker compose --profile prod up -d --build
|
||||||
|
|
||||||
|
down:
|
||||||
|
docker compose --profile prod down
|
||||||
|
docker compose --profile dev down
|
||||||
|
|
||||||
|
logs:
|
||||||
|
docker compose logs -f
|
||||||
|
|
||||||
|
restart:
|
||||||
|
docker compose --profile prod down
|
||||||
|
docker compose --profile prod up -d --build
|
||||||
|
|
||||||
|
dev:
|
||||||
|
docker compose --profile dev up --build
|
||||||
38
docs/docker-compose.yml
Normal file
38
docs/docker-compose.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
services:
|
||||||
|
docs:
|
||||||
|
build: .
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
labels:
|
||||||
|
caddy: ${DOMAIN}
|
||||||
|
caddy.reverse_proxy: "{{upstreams 80}}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:80/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
profiles:
|
||||||
|
- prod
|
||||||
|
|
||||||
|
docs-dev:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: deps
|
||||||
|
command: npx astro dev --host 0.0.0.0 --port 4321
|
||||||
|
ports:
|
||||||
|
- "4321:4321"
|
||||||
|
volumes:
|
||||||
|
- ./src:/app/src
|
||||||
|
- ./public:/app/public
|
||||||
|
- ./astro.config.mjs:/app/astro.config.mjs
|
||||||
|
- ./tsconfig.json:/app/tsconfig.json
|
||||||
|
environment:
|
||||||
|
- ASTRO_TELEMETRY_DISABLED=1
|
||||||
|
- VITE_HMR_HOST=${VITE_HMR_HOST:-}
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
networks:
|
||||||
|
caddy:
|
||||||
|
external: true
|
||||||
Loading…
x
Reference in New Issue
Block a user