Inital Commit
This commit is contained in:
40
Dockerfile
Normal file
40
Dockerfile
Normal file
@@ -0,0 +1,40 @@
|
||||
# Stage 1: Build SvelteKit static frontend
|
||||
FROM oven/bun:alpine AS frontend-builder
|
||||
WORKDIR /app
|
||||
COPY package.json bun.lock ./
|
||||
RUN bun install --frozen-lockfile || bun install
|
||||
COPY . .
|
||||
RUN bun run build
|
||||
|
||||
# Stage 2: Build Golang server
|
||||
FROM golang:1.23-alpine AS backend-builder
|
||||
# Enable CGO for SQLite3 compiling
|
||||
RUN apk add --no-cache gcc musl-dev
|
||||
WORKDIR /app
|
||||
COPY server/go.mod ./
|
||||
# Copy go.sum if it exists
|
||||
COPY server/go.su[m] ./
|
||||
RUN go mod download
|
||||
COPY server/ ./
|
||||
RUN CGO_ENABLED=1 GOOS=linux go build -o sim-link-server main.go
|
||||
|
||||
# Stage 3: Final lightweight runtime image
|
||||
FROM alpine:latest
|
||||
WORKDIR /app
|
||||
|
||||
# Install sqlite-libs and tzdata for go-sqlite3 runtime
|
||||
RUN apk add --no-cache sqlite-libs tzdata
|
||||
|
||||
# Copy built frontend from Stage 1
|
||||
COPY --from=frontend-builder /app/build ./build
|
||||
|
||||
# Copy built Golang binary to system bin so we can run it from any directory
|
||||
COPY --from=backend-builder /app/sim-link-server /usr/local/bin/sim-link-server
|
||||
|
||||
# Change to a server sub-directory so relative paths like "../build"
|
||||
# and "../results" still resolve properly just as they did in dev.
|
||||
WORKDIR /app/server
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["sim-link-server"]
|
||||
Reference in New Issue
Block a user