Skip to content

Commit 57276f1

Browse files
committed
create local environment
1 parent 2fdf643 commit 57276f1

2 files changed

Lines changed: 96 additions & 0 deletions

File tree

Dockerfile.local

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Local verification Dockerfile (no SOPS).
2+
# Mirrors Dockerfile but reads env directly from the runtime environment.
3+
FROM oven/bun:1.3.2-slim AS base
4+
WORKDIR /app
5+
6+
FROM base AS builder
7+
8+
COPY package.json bun.lock ./
9+
RUN bun install --frozen-lockfile
10+
11+
COPY . .
12+
RUN bun run prepare
13+
RUN bun run build
14+
15+
FROM base AS executor
16+
WORKDIR /app
17+
18+
COPY --from=builder /app/build ./build
19+
COPY --from=builder /app/package.json ./
20+
COPY --from=builder /app/drizzle ./drizzle
21+
COPY --from=builder /app/drizzle.config.ts ./
22+
COPY --from=builder /app/src/lib/env/env.server.ts ./src/lib/env/env.server.ts
23+
COPY --from=builder /app/src/lib/shared/models/schema.ts ./src/lib/shared/models/schema.ts
24+
COPY --from=builder /app/bun.lock ./
25+
RUN bun install --frozen-lockfile
26+
ENV PORT=3000
27+
EXPOSE 3000
28+
29+
CMD ["sh", "-c", "bun drizzle-kit migrate && exec bun build/index.js"]

compose.local.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Local verification stack for cms.utcode.net.
2+
#
3+
# Usage:
4+
# podman compose -f compose.local.yml up --build
5+
# open http://localhost:3000
6+
# open http://localhost:9001 # MinIO console (minioadmin / minioadmin)
7+
#
8+
# Auth is disabled via UNSAFE_DISABLE_AUTH=true, so NODE_ENV must be development.
9+
10+
services:
11+
db:
12+
image: docker.io/library/postgres:17-alpine
13+
environment:
14+
POSTGRES_USER: postgres
15+
POSTGRES_PASSWORD: postgres
16+
POSTGRES_DB: cms
17+
ports:
18+
- "5432:5432"
19+
volumes:
20+
- db-data:/var/lib/postgresql/data
21+
healthcheck:
22+
test: ["CMD-SHELL", "pg_isready -U postgres -d cms"]
23+
interval: 2s
24+
timeout: 5s
25+
retries: 30
26+
27+
minio:
28+
image: docker.io/minio/minio:latest
29+
command: server /data --console-address ":9001"
30+
environment:
31+
MINIO_ROOT_USER: minioadmin
32+
MINIO_ROOT_PASSWORD: minioadmin
33+
ports:
34+
- "9000:9000"
35+
- "9001:9001"
36+
volumes:
37+
- minio-data:/data
38+
39+
app:
40+
build:
41+
context: .
42+
dockerfile: Dockerfile.local
43+
environment:
44+
NODE_ENV: development
45+
PORT: 3000
46+
DATABASE_URL: postgres://postgres:postgres@db:5432/cms
47+
BETTER_AUTH_SECRET: local-verification-secret-not-for-production
48+
BETTER_AUTH_URL: http://localhost:3000
49+
S3_ENDPOINT: http://minio:9000
50+
S3_ACCESS_KEY: minioadmin
51+
S3_SECRET_KEY: minioadmin
52+
S3_BUCKET: local
53+
S3_PUBLIC_URL: http://localhost:9000/local
54+
GITHUB_CLIENT_ID: ""
55+
GITHUB_CLIENT_SECRET: ""
56+
UNSAFE_DISABLE_AUTH: "true"
57+
ports:
58+
- "3000:3000"
59+
depends_on:
60+
db:
61+
condition: service_healthy
62+
minio:
63+
condition: service_started
64+
65+
volumes:
66+
db-data:
67+
minio-data:

0 commit comments

Comments
 (0)