mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-04 02:46:23 +00:00
62 lines
2.0 KiB
Docker
62 lines
2.0 KiB
Docker
# ===== STAGE 1: Build Dependencies =====
|
|
FROM debian:trixie-slim AS builder
|
|
ARG TARGETARCH
|
|
|
|
# Install build dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates curl gnupg git build-essential \
|
|
golang-go nodejs npm \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install opencode from GitHub releases
|
|
RUN ARCH=${TARGETARCH} \
|
|
&& if [ "$ARCH" = "amd64" ]; then ARCH="x86_64"; fi \
|
|
&& curl -fsSL "https://github.com/anomalyco/opencode/releases/latest/download/opencode_linux_${ARCH}.tar.gz" \
|
|
| tar -xz -C /usr/local/bin opencode \
|
|
&& chmod +x /usr/local/bin/opencode
|
|
|
|
# Build openclaw from source
|
|
WORKDIR /build/openclaw
|
|
RUN git clone --depth 1 https://github.com/openclaw/openclaw.git . \
|
|
&& npm ci \
|
|
&& npm run build \
|
|
&& mkdir -p /opt/openclaw \
|
|
&& cp -r dist/* /opt/openclaw/ \
|
|
&& cp package.json /opt/openclaw/ \
|
|
&& cp -r node_modules /opt/openclaw/
|
|
|
|
# ===== STAGE 2: Runtime =====
|
|
FROM debian:trixie-slim
|
|
|
|
# Install runtime dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
supervisor curl ca-certificates tini \
|
|
&& curl -fsSL https://ollama.com/install.sh | sh \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install code-server
|
|
RUN curl -fsSL https://code-server.dev/install.sh | sh -s -- --method=standalone
|
|
|
|
# Copy binaries from builder
|
|
COPY --from=builder /usr/local/bin/opencode /usr/local/bin/opencode
|
|
COPY --from=builder /opt/openclaw /opt/openclaw
|
|
|
|
# Create volume directories
|
|
RUN mkdir -p \
|
|
/data/ollama \
|
|
/config /data /projects \
|
|
/home/node/.openclaw /home/node/.openclaw/workspace /home/node/.config/openclaw \
|
|
/data/vscode/data /data/vscode/config
|
|
|
|
# Copy supervisor config
|
|
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
|
|
|
# Copy default opencode config
|
|
COPY opencode-config.json /config/config.json
|
|
|
|
# Set timezone
|
|
ENV TZ=America/Vancouver
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
# Entrypoint
|
|
ENTRYPOINT ["tini", "--", "/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] |