Add headless Agentbox environment spike
Co-authored-by: codegirl007 <codegirl-007@users.noreply.github.com>
This commit is contained in:
co-authored by
codegirl007
parent
98f56833a0
commit
96dade334d
@@ -0,0 +1,31 @@
|
||||
FROM debian:bookworm-slim AS builder
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
libx11-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY examples/mover/main.c /src/main.c
|
||||
RUN cc -std=c11 -O2 -Wall -Wextra -Werror /src/main.c -lX11 -o /mover
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
libx11-6 \
|
||||
openbox \
|
||||
scrot \
|
||||
x11-utils \
|
||||
xdotool \
|
||||
xvfb \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& useradd --create-home --uid 10001 agentbox
|
||||
|
||||
COPY --from=builder /mover /opt/agentbox/mover
|
||||
COPY environment/entrypoint.sh /opt/agentbox/entrypoint.sh
|
||||
RUN chmod 0755 /opt/agentbox/entrypoint.sh /opt/agentbox/mover
|
||||
|
||||
USER agentbox
|
||||
ENV DISPLAY=:99
|
||||
ENTRYPOINT ["/opt/agentbox/entrypoint.sh"]
|
||||
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
export HOME=/tmp/home
|
||||
export XDG_RUNTIME_DIR=/tmp/runtime
|
||||
mkdir -p "$HOME" "$XDG_RUNTIME_DIR"
|
||||
chmod 0700 "$XDG_RUNTIME_DIR"
|
||||
|
||||
cleanup() {
|
||||
rm -f /tmp/agentbox-ready
|
||||
kill "${OPENBOX_PID:-}" "${XVFB_PID:-}" 2>/dev/null || true
|
||||
wait "${OPENBOX_PID:-}" "${XVFB_PID:-}" 2>/dev/null || true
|
||||
}
|
||||
|
||||
terminate() {
|
||||
trap - EXIT INT TERM
|
||||
cleanup
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
trap terminate INT TERM
|
||||
|
||||
Xvfb "$DISPLAY" -screen 0 640x480x24 -nolisten tcp -noreset &
|
||||
XVFB_PID=$!
|
||||
|
||||
attempt=0
|
||||
until xdpyinfo -display "$DISPLAY" >/dev/null 2>&1; do
|
||||
attempt=$((attempt + 1))
|
||||
if [ "$attempt" -ge 100 ]; then
|
||||
echo "Xvfb did not become ready" >&2
|
||||
exit 1
|
||||
fi
|
||||
sleep 0.05
|
||||
done
|
||||
|
||||
openbox --sm-disable >/tmp/openbox.log 2>&1 &
|
||||
OPENBOX_PID=$!
|
||||
touch /tmp/agentbox-ready
|
||||
|
||||
while :; do
|
||||
sleep 3600 &
|
||||
wait $!
|
||||
done
|
||||
Reference in New Issue
Block a user