Files
RedditBot/Dockerfile
T
jjbruntonandClaude Opus 4.7 eb7bc7c045 Install x11-utils and wait reliably for Xvfb in entrypoint
The Xvfb readiness loop in entrypoint.sh used xdpyinfo, which isn't
in the Playwright base image. On busy hosts the loop fell through
before Xvfb was ready, so Chromium launched with no X server and
crashed with "Missing X server or \$DISPLAY".

Add x11-utils (provides xdpyinfo) and extend the readiness loop to
10 s with explicit logging.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 19:01:32 +01:00

52 lines
1.1 KiB
Docker

# Use the official Playwright image which includes all browser dependencies
FROM mcr.microsoft.com/playwright:v1.57.0-jammy
# Install Xvfb (virtual display), x11vnc (VNC server) and noVNC (web-based VNC client)
# so a human can log in to Reddit through the dashboard.
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Etc/UTC
RUN apt-get update && apt-get install -y --no-install-recommends \
tzdata \
xvfb \
x11vnc \
x11-utils \
novnc \
websockify \
fluxbox \
procps \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies (including devDependencies for building)
RUN npm ci
# Copy source code
COPY . .
# Build the TypeScript project
RUN npm run build
# Create data directory
RUN mkdir -p data
# Copy entrypoint
COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
# Web dashboard
EXPOSE 3000
# noVNC (browser-accessible VNC for human login)
EXPOSE 6080
ENV DISPLAY=:99 \
VNC_DISPLAY_NUM=99 \
VNC_PORT=5900 \
NOVNC_PORT=6080 \
SCREEN_GEOMETRY=1280x800x24
CMD ["/usr/local/bin/entrypoint.sh"]