mirror of
https://github.com/openclaw/openclaw.git
synced 2026-02-15 14:49:29 +00:00
46 lines
1.8 KiB
Docker
46 lines
1.8 KiB
Docker
ARG BASE_IMAGE=openclaw-sandbox:bookworm-slim
|
|
FROM ${BASE_IMAGE}
|
|
|
|
USER root
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
ARG PACKAGES="curl wget jq coreutils grep nodejs npm python3 git ca-certificates golang-go rustc cargo unzip pkg-config libasound2-dev build-essential file"
|
|
ARG INSTALL_PNPM=1
|
|
ARG INSTALL_BUN=1
|
|
ARG BUN_INSTALL_DIR=/opt/bun
|
|
ARG INSTALL_BREW=1
|
|
ARG BREW_INSTALL_DIR=/home/linuxbrew/.linuxbrew
|
|
ARG FINAL_USER=sandbox
|
|
|
|
ENV BUN_INSTALL=${BUN_INSTALL_DIR}
|
|
ENV HOMEBREW_PREFIX=${BREW_INSTALL_DIR}
|
|
ENV HOMEBREW_CELLAR=${BREW_INSTALL_DIR}/Cellar
|
|
ENV HOMEBREW_REPOSITORY=${BREW_INSTALL_DIR}/Homebrew
|
|
ENV PATH=${BUN_INSTALL_DIR}/bin:${BREW_INSTALL_DIR}/bin:${BREW_INSTALL_DIR}/sbin:${PATH}
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ${PACKAGES} \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN if [ "${INSTALL_PNPM}" = "1" ]; then npm install -g pnpm; fi
|
|
|
|
RUN if [ "${INSTALL_BUN}" = "1" ]; then \
|
|
curl -fsSL https://bun.sh/install | bash; \
|
|
ln -sf "${BUN_INSTALL_DIR}/bin/bun" /usr/local/bin/bun; \
|
|
fi
|
|
|
|
RUN if [ "${INSTALL_BREW}" = "1" ]; then \
|
|
if ! id -u linuxbrew >/dev/null 2>&1; then useradd -m -s /bin/bash linuxbrew; fi; \
|
|
mkdir -p "${BREW_INSTALL_DIR}"; \
|
|
chown -R linuxbrew:linuxbrew "$(dirname "${BREW_INSTALL_DIR}")"; \
|
|
su - linuxbrew -c "NONINTERACTIVE=1 CI=1 /bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'"; \
|
|
if [ ! -e "${BREW_INSTALL_DIR}/Library" ]; then ln -s "${BREW_INSTALL_DIR}/Homebrew/Library" "${BREW_INSTALL_DIR}/Library"; fi; \
|
|
if [ ! -x "${BREW_INSTALL_DIR}/bin/brew" ]; then echo \"brew install failed\"; exit 1; fi; \
|
|
ln -sf "${BREW_INSTALL_DIR}/bin/brew" /usr/local/bin/brew; \
|
|
fi
|
|
|
|
# Default is sandbox, but allow BASE_IMAGE overrides to select another final user.
|
|
USER ${FINAL_USER}
|
|
|