| # debian.sh --arch 'amd64' out/ 'trixie' '@1765152000' |
| COPY docker-entrypoint.sh /usr/local/bin # buildkit |
| COPY /usr/local/bin/bun /usr/local/bin/bun # buildkit |
| RUN /bin/sh -c mkdir -p /usr/local/bun-node-fallback-bin && ln -s /usr/local/bin/bun /usr/local/bun-node-fallback-bin/node # buildkit |
| ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bun-node-fallback-bin |
| ARG BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 |
| ENV BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 |
| ARG BUN_INSTALL_BIN=/usr/local/bin |
| ENV BUN_INSTALL_BIN=/usr/local/bin |
| RUN |2 BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 BUN_INSTALL_BIN=/usr/local/bin /bin/sh -c groupadd bun --gid 1000 && useradd bun --uid 1000 --gid bun --shell /bin/sh --create-home && ln -s /usr/local/bin/bun /usr/local/bin/bunx && which bun && which bunx && bun --version # buildkit |
| WORKDIR /home/bun/app |
| ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] |
| CMD ["/usr/local/bin/bun"] |
| LABEL role=leader |
| LABEL description=The orchestrator of the agent ecosystem - multi-stage build |
| RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends bash less curl jq tree ca-certificates ripgrep && rm -rf /var/lib/apt/lists/* # buildkit |
| ENV BUN_INSTALL=/root/.bun |
| ENV PATH=/root/.bun/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bun-node-fallback-bin |
| COPY /root/.bun /root/.bun # buildkit |
| COPY /usr/local/bin/yq /usr/local/bin/yq # buildkit |
| COPY /usr/local/bin/sg /usr/local/bin/sg # buildkit |
| COPY /usr/local/bin/opencode /usr/local/bin/opencode # buildkit |
| COPY /usr/local/bin/ast-grep /usr/local/bin/ast-grep # buildkit |
| WORKDIR /workspace |
| RUN /bin/sh -c mkdir -p /shared/config /shared/claude /shared/skills /shared/commands /shared/agents /data/artifacts /data/reports /data/logs # buildkit |
| ENV XDG_CONFIG_HOME=/shared/config |
| ENV HOME=/root |
| ENV NODE_ENV=development |
| ENV OH_MY_OPENCODE_ENABLED=true |
| ENV USAGE_LOGGING_ENABLED=true |
| ENV LOG_INGEST_URL=http://ai-stack-log-ingest:3000/ingest |
| ENV METRICS_PORT=9090 |
| RUN /bin/sh -c echo "alias opencode='opencode attach http://localhost:8080'" >> /root/.bashrc # buildkit |
| COPY docker/shared-config/ /shared/config/ # buildkit |
| SHELL [/bin/bash -c] |
| RUN /bin/bash -c echo "=== DEBUG: Final Plugin Verification ===" && echo "OpenCode location:" && which opencode && echo "OpenCode version:" && opencode --version && echo "ripgrep version:" && rg --version | head -1 && echo "ast-grep version:" && sg --version && echo "Configuration check (XDG_CONFIG_HOME/opencode/):" && cat /shared/config/opencode/opencode.jsonc | jq '.plugin' 2>/dev/null || echo "Config not readable" && echo "oh-my-opencode config:" && cat /shared/config/opencode/oh-my-opencode.json | jq '.name' 2>/dev/null || echo "oh-my-opencode config not readable" && echo "Plugin directory check:" && ls -la /shared/config/opencode/ 2>/dev/null || echo "Config dir not accessible" && echo "Testing basic OpenCode functionality:" && timeout 5 opencode --help >/dev/null 2>&1 && echo "OpenCode CLI working" || echo "OpenCode CLI issue" && echo "=== DEBUG: Verification complete ===" # buildkit |
| RUN /bin/bash -c printf '%s\n' '#!/bin/bash' 'set -e' '' '# Start metrics exporter if available' 'if [ -f /shared/config/metrics-exporter.ts ]; then' ' /root/.bun/bin/bun run /shared/config/metrics-exporter.ts &' ' echo "Metrics exporter started on port ${METRICS_PORT:-9090}"' 'fi' '' '# Start OpenCode server' 'exec /usr/local/bin/opencode serve --hostname 0.0.0.0 --port 8080 --mdns --print-logs' > /usr/local/bin/start-opencode.sh && chmod +x /usr/local/bin/start-opencode.sh && echo "=== Validating startup script ===" && bash -n /usr/local/bin/start-opencode.sh && echo "Startup script syntax: OK" && cat /usr/local/bin/start-opencode.sh # buildkit |
| HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:8080/ || exit 1"] "30s" "10s" "40s" "0s" '\x03'} |
| EXPOSE [8080/tcp 9090/tcp] |
| CMD ["/usr/local/bin/start-opencode.sh"] |