Optimized Dockerfile
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
node_modules/
|
||||||
|
*.log
|
||||||
|
.env*
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.md
|
||||||
|
compose.yaml
|
||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
|
data/
|
||||||
+54
-5
@@ -1,18 +1,67 @@
|
|||||||
FROM oven/bun:latest
|
# ═══════════════════════════════════════════════════════════════════════
|
||||||
|
# STAGE 1: Dependencies
|
||||||
|
# Install only production dependencies
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════
|
||||||
|
FROM oven/bun:1.2-slim AS deps
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package.json bun.lock ./
|
||||||
|
RUN bun install --production --frozen-lockfile
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════
|
||||||
|
# STAGE 2: Runtime
|
||||||
|
# Minimal image with Chromium + Bun runtime only
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════
|
||||||
|
FROM debian:bookworm-slim AS runtime
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source="https://gitea.bigoscloud.com/biggy/samsung-tv-server" \
|
LABEL org.opencontainers.image.source="https://gitea.bigoscloud.com/biggy/samsung-tv-server" \
|
||||||
org.opencontainers.image.title="Samsung TV Server" \
|
org.opencontainers.image.title="Samsung TV Server" \
|
||||||
org.opencontainers.image.description="Samsung TV Server — Bun runtime" \
|
org.opencontainers.image.description="Samsung TV Server — Bun runtime (optimized)" \
|
||||||
org.opencontainers.image.licenses="MIT"
|
org.opencontainers.image.licenses="MIT"
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y chromium && rm -rf /var/lib/apt/lists/*
|
# Install Chromium with aggressive cleanup
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
chromium \
|
||||||
|
ca-certificates \
|
||||||
|
fonts-liberation \
|
||||||
|
libasound2 \
|
||||||
|
libatk-bridge2.0-0 \
|
||||||
|
libatk1.0-0 \
|
||||||
|
libatspi2.0-0 \
|
||||||
|
libcups2 \
|
||||||
|
libdbus-1-3 \
|
||||||
|
libdrm2 \
|
||||||
|
libgbm1 \
|
||||||
|
libgtk-3-0 \
|
||||||
|
libnspr4 \
|
||||||
|
libnss3 \
|
||||||
|
libxcomposite1 \
|
||||||
|
libxdamage1 \
|
||||||
|
libxfixes3 \
|
||||||
|
libxkbcommon0 \
|
||||||
|
libxrandr2 \
|
||||||
|
xdg-utils && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /var/cache/apt/* /var/log/apt/* /tmp/*
|
||||||
|
|
||||||
|
# Copy Bun binary from official image (lighter than full install)
|
||||||
|
COPY --from=oven/bun:1.2-slim /usr/local/bin/bun /usr/local/bin/bun
|
||||||
|
COPY --from=oven/bun:1.2-slim /usr/local/bin/bunx /usr/local/bin/bunx
|
||||||
|
|
||||||
|
# Copy dependencies from deps stage
|
||||||
|
COPY --from=deps /app/node_modules ./node_modules
|
||||||
|
|
||||||
|
# Copy application code
|
||||||
COPY package.json bun.lock ./
|
COPY package.json bun.lock ./
|
||||||
RUN bun install --production
|
COPY src/ ./src/
|
||||||
|
COPY public/ ./public/
|
||||||
|
|
||||||
COPY . .
|
# Create data directory for SQLite
|
||||||
|
RUN mkdir -p /app/data
|
||||||
|
|
||||||
EXPOSE 3099
|
EXPOSE 3099
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user