44# DevTools Frontend build stage using browser-operator-core
55FROM --platform=linux/amd64 ubuntu:22.04 AS devtools-builder
66
7- # Install required packages for DevTools frontend build
7+ # Install required packages
88RUN apt-get update && apt-get install -y \
99 curl \
1010 git \
@@ -30,7 +30,8 @@ RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
3030ENV PATH="/workspace/depot_tools:${PATH}"
3131ENV DEPOT_TOOLS_UPDATE=0
3232
33- # Follow README instructions exactly - fetching code
33+ # Follow README instructions exactly:
34+ # fetching code
3435RUN mkdir devtools
3536WORKDIR /workspace/devtools
3637RUN fetch devtools-frontend
@@ -49,13 +50,38 @@ RUN git remote add upstream https://github.com/BrowserOperator/browser-operator-
4950RUN git fetch upstream
5051RUN git checkout upstream/main
5152
52- # Build Browser Operator version
53+ # Copy local changes from the repository (preserve build config)
54+ # Uncomment the following lines if you want to copy local changes
55+ # COPY browser-operator-core/front_end/core /workspace/devtools/devtools-frontend/front_end/core/
56+ # COPY browser-operator-core/front_end/panels/ai_chat /workspace/devtools/devtools-frontend/front_end/panels/ai_chat/
57+ # COPY browser-operator-core/front_end/entrypoints /workspace/devtools/devtools-frontend/front_end/entrypoints/
58+ # COPY browser-operator-core/scripts /workspace/devtools/devtools-frontend/scripts/
59+
60+ # Force automated mode
61+ RUN sed -i 's/AUTOMATED_MODE: false/AUTOMATED_MODE: true/' front_end/panels/ai_chat/core/BuildConfig.ts;
62+
63+ # Build Browser Operator version with current changes
5364RUN npm run build
5465
66+ # ============================================================================
67+ # Eval Server build stage
68+ # ============================================================================
69+ FROM --platform=linux/arm64 node:18-alpine AS eval-server-builder
70+
71+ WORKDIR /workspace
72+
73+ # Copy local browser-operator-core eval server with our modifications
74+ COPY browser-operator-core/eval-server/nodejs /workspace/eval-server
75+
76+ WORKDIR /workspace/eval-server
77+
78+ # Install dependencies
79+ RUN npm install
80+
5581# ============================================================================
5682# Use kernel-images base with DevTools integration
5783# ============================================================================
58- FROM docker.io/golang:1.25.0 AS server-builder
84+ FROM --platform=linux/arm64 docker.io/golang:1.25.0 AS server-builder
5985WORKDIR /workspace/server
6086
6187ARG TARGETOS
@@ -67,19 +93,19 @@ COPY kernel-images/server/go.sum ./
6793RUN go mod download
6894
6995COPY kernel-images/server/ .
70- RUN GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64 } \
96+ RUN GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-arm64 } \
7197 go build -ldflags="-s -w" -o /out/kernel-images-api ./cmd/api
7298
7399# webrtc client
74- FROM node:22-bullseye-slim AS client
100+ FROM --platform=linux/arm64 node:22-bullseye-slim AS client
75101WORKDIR /src
76102COPY kernel-images/images/chromium-headful/client/package*.json ./
77103RUN npm install
78104COPY kernel-images/images/chromium-headful/client/ .
79105RUN npm run build
80106
81107# xorg dependencies
82- FROM docker.io/ubuntu:22.04 AS xorg-deps
108+ FROM --platform=linux/arm64 docker.io/ubuntu:22.04 AS xorg-deps
83109WORKDIR /xorg
84110ENV DEBIAN_FRONTEND=noninteractive
85111RUN set -eux; \
@@ -104,11 +130,11 @@ RUN set -eux; \
104130 make -j$(nproc); \
105131 make install;
106132
107- FROM ghcr.io/onkernel/neko/base:3.0.6-v1.0.1 AS neko
133+ FROM --platform=linux/arm64 ghcr.io/onkernel/neko/base:3.0.6-v1.0.1 AS neko
108134# ^--- now has event.SYSTEM_PONG with legacy support to keepalive
109135
110136# Final stage: kernel-images base + DevTools static files
111- FROM docker.io/ubuntu:22.04
137+ FROM --platform=linux/arm64 docker.io/ubuntu:22.04
112138
113139ENV DEBIAN_FRONTEND=noninteractive
114140ENV DEBIAN_PRIORITY=high
@@ -235,6 +261,9 @@ COPY kernel-images/images/chromium-headful/wrapper.sh /wrapper.sh
235261COPY kernel-images/images/chromium-headful/supervisord.conf /etc/supervisor/supervisord.conf
236262COPY kernel-images/images/chromium-headful/supervisor/services/ /etc/supervisor/conf.d/services/
237263
264+ # Override chromium.conf with local version that includes auto-open-devtools
265+ COPY supervisor/services/chromium.conf /etc/supervisor/conf.d/services/chromium.conf
266+
238267# copy the kernel-images API binary built in the builder stage
239268COPY --from=server-builder /out/kernel-images-api /usr/local/bin/kernel-images-api
240269
@@ -253,6 +282,12 @@ RUN ln -s /etc/nginx/sites-available/devtools /etc/nginx/sites-enabled/devtools
253282# Add DevTools nginx service to supervisor
254283COPY supervisor/services/nginx-devtools.conf /etc/supervisor/conf.d/services/nginx-devtools.conf
255284
285+ # Add eval server service to supervisor
286+ COPY supervisor/services/eval-server.conf /etc/supervisor/conf.d/services/eval-server.conf
287+
288+ # Add neko service to supervisor (configured for port 8000)
289+ COPY supervisor/services/neko.conf /etc/supervisor/conf.d/services/neko.conf
290+
256291# Create nginx temp directories and set permissions
257292RUN mkdir -p /var/lib/nginx/body \
258293 /var/lib/nginx/proxy \
@@ -264,4 +299,23 @@ RUN mkdir -p /var/lib/nginx/body \
264299
265300RUN useradd -m -s /bin/bash kernel
266301
302+ # ============================================================================
303+ # Eval Server Integration
304+ # ============================================================================
305+
306+ # Copy eval server from builder
307+ COPY --from=eval-server-builder /workspace/eval-server /opt/eval-server
308+
309+ # Install Node.js in final image for eval server
310+ RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
311+ apt-get install -y nodejs && \
312+ rm -rf /var/lib/apt/lists/*
313+
314+ # Create eval server startup script
315+ RUN echo '#!/bin/bash\ncd /opt/eval-server && node examples/with-http-wrapper.js' > /usr/local/bin/start-eval-server.sh && \
316+ chmod +x /usr/local/bin/start-eval-server.sh
317+
318+ # Expose ports
319+ EXPOSE 8000 8001 8080 8081 8082
320+
267321ENTRYPOINT [ "/wrapper.sh" ]
0 commit comments