Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
115 lines
3.1 KiB
Docker
115 lines
3.1 KiB
Docker
FROM node:18-bullseye-slim
|
|
|
|
# Environment variables
|
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
|
|
ENV CHROME_PATH=/usr/bin/chromium
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV DISPLAY=:99
|
|
ENV NODE_OPTIONS="--max-http-header-size=26214400"
|
|
ENV CHOKIDAR_USEPOLLING=true
|
|
ENV CHOKIDAR_INTERVAL=300
|
|
# Add Xvfb environment variables for better compatibility
|
|
ENV XVFB_WHD=1920x1024x16
|
|
ENV XVFB_COLORDEPTH=16
|
|
ENV XVFB_ARGS="-ac -nolisten tcp -dpi 96 +extension RANDR"
|
|
# Force software rendering to avoid DRI driver issues
|
|
ENV LIBGL_ALWAYS_SOFTWARE=1
|
|
ENV GALLIUM_DRIVER=llvmpipe
|
|
ENV LP_NO_RAST=false
|
|
ENV LIBGL_DRI3_DISABLE=1
|
|
ENV LIBGL_ALWAYS_INDIRECT=1
|
|
|
|
# Update package list and install essential dependencies
|
|
RUN apt-get update -qq && \
|
|
apt-get install -qq -y --no-install-recommends \
|
|
ca-certificates \
|
|
gnupg2 \
|
|
apt-transport-https \
|
|
software-properties-common && \
|
|
apt-get update -qq
|
|
|
|
# Install Chromium and dependencies (split to avoid Python package conflicts)
|
|
RUN apt-get install -qq -y --no-install-recommends \
|
|
libgconf-2-4 \
|
|
libxss1 \
|
|
libxtst6 \
|
|
libxext6 \
|
|
libxrender1 \
|
|
libxrandr2 \
|
|
libxinerama1 \
|
|
libxi6 \
|
|
libxcursor1 \
|
|
libxcomposite1 \
|
|
libxdamage1 \
|
|
libxfixes3 \
|
|
libxft2 \
|
|
chromium \
|
|
chromium-sandbox \
|
|
xvfb \
|
|
x11vnc \
|
|
fluxbox \
|
|
x11-utils \
|
|
xauth \
|
|
fonts-ipafont-gothic \
|
|
fonts-wqy-zenhei \
|
|
curl \
|
|
vim \
|
|
nano \
|
|
procps \
|
|
python3 \
|
|
python3-pip \
|
|
dbus-x11 && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install websockify via pip to avoid debian package issues
|
|
RUN pip3 install --no-cache-dir websockify==0.13.0
|
|
|
|
# Download NoVNC manually to avoid package dependencies
|
|
RUN mkdir -p /usr/share/novnc && \
|
|
curl -fsSL https://github.com/novnc/noVNC/archive/v1.4.0.tar.gz | \
|
|
tar -xz --strip-components=1 -C /usr/share/novnc
|
|
|
|
# Create and switch to non-root user
|
|
RUN useradd -m appuser
|
|
|
|
# VNC uses the default noVNC interface
|
|
|
|
# Make novnc directory writable by appuser
|
|
RUN chown -R appuser:appuser /usr/share/novnc
|
|
WORKDIR /usr/src/app
|
|
|
|
# Copy package files and install dependencies
|
|
COPY --chown=appuser:appuser package*.json ./
|
|
RUN npm install
|
|
|
|
# Copy application files
|
|
COPY --chown=appuser:appuser . .
|
|
|
|
# Make startup scripts executable
|
|
RUN chmod +x vnc-startup.sh || true && \
|
|
chmod +x vnc-startup-improved.sh || true && \
|
|
chmod +x vnc-startup-k8s-fix.sh || true && \
|
|
chmod +x vnc-startup-websocket-fix.sh || true
|
|
|
|
USER appuser
|
|
|
|
# Expose VNC port
|
|
EXPOSE 4000 5900
|
|
|
|
# Use improved startup script for VNC or direct Xvfb for headless
|
|
CMD if [ "$VNC_ENABLED" = "true" ]; then \
|
|
if [ -f "./vnc-startup-improved.sh" ]; then \
|
|
echo "Using improved VNC startup script..." && \
|
|
./vnc-startup-improved.sh npm run dev; \
|
|
else \
|
|
echo "Using standard VNC startup script..." && \
|
|
./vnc-startup.sh; \
|
|
fi \
|
|
else \
|
|
export DISPLAY=:99 && \
|
|
Xvfb :99 -screen 0 1024x768x16 -ac > /tmp/xvfb.log 2>&1 & \
|
|
sleep 2 && \
|
|
npm run dev; \
|
|
fi
|