-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
48 lines (37 loc) · 1.29 KB
/
Copy pathDockerfile
File metadata and controls
48 lines (37 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# --- Build stage ---
FROM golang:1.24.1-bullseye AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o render-server main.go
# --- Runtime stage ---
FROM debian:bullseye-slim
# Install Chromium and minimal runtime deps
RUN apt-get update && apt-get install -y \
chromium xvfb xauth libasound2 libatk-bridge2.0-0 libatk1.0-0 libcups2 \
libdbus-1-3 libgdk-pixbuf2.0-0 libnspr4 libnss3 libx11-xcb1 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libgtk-3-0 ca-certificates xdg-utils \
--no-install-recommends && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Create non-root user and working directory
RUN groupadd -r appuser && useradd -r -g appuser appuser
RUN mkdir -p /home/appuser && chown -R appuser:appuser /home/appuser
WORKDIR /app
# Copy Go binary from builder stage
COPY --from=builder /app/render-server .
# Set environment variables
ENV DISPLAY=:99
ENV CHROMIUM_PATH=/usr/bin/chromium
ENV HOME=/home/appuser
# Expose app port
EXPOSE 8080
# Startup script for Xvfb + server
RUN echo '#!/bin/bash\n\
echo "Starting Xvfb..."\n\
Xvfb :99 -screen 0 1920x1080x24 &\n\
sleep 2\n\
echo "Starting render server..."\n\
exec /app/render-server' > /app/start.sh && chmod +x /app/start.sh
USER appuser
# Entrypoint
CMD ["/bin/bash", "/app/start.sh"]