更新 opencode/Dockerfile

This commit is contained in:
wol
2026-07-03 18:05:53 +08:00
parent a937543bbb
commit 4707cc8e7f
+231 -27
View File
@@ -1,42 +1,235 @@
###############################################################################
#
# OpenCode Development Image
#
# 基于:
# opencode-base:1.0
# Dockerfile (Part 1/2)
#
###############################################################################
FROM opencode-base:1.0
FROM ubuntu:24.04
LABEL maintainer="OpenCode Dev"
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
###############################################################################
# OpenCode
# Base Packages
###############################################################################
RUN npm install -g opencode-ai@latest
RUN apt-get update && \
apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
software-properties-common \
gnupg \
lsb-release \
curl \
wget \
git \
git-lfs \
unzip \
zip \
xz-utils \
tar \
gzip \
bzip2 \
nano \
vim \
less \
jq \
tree \
htop \
tmux \
procps \
iputils-ping \
dnsutils \
net-tools \
openssh-client \
rsync \
file \
sudo \
bash-completion \
ripgrep \
fd-find \
fzf \
build-essential \
clang \
llvm \
cmake \
ninja-build \
pkg-config \
make \
libc6-dev \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libffi-dev \
liblzma-dev \
libncursesw5-dev \
libxml2-dev \
libxmlsec1-dev \
libcurl4-openssl-dev \
python3 \
python3-dev \
python3-pip \
python3-venv \
python-is-python3 \
openjdk-21-jdk \
maven \
gradle \
golang \
&& rm -rf /var/lib/apt/lists/*
###############################################################################
# 环境变量
# Docker CLI
###############################################################################
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
chmod a+r /etc/apt/keyrings/docker.gpg
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
> /etc/apt/sources.list.d/docker.list
RUN apt-get update && \
apt-get install -y docker-ce-cli && \
rm -rf /var/lib/apt/lists/*
###############################################################################
# Node 22
###############################################################################
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
RUN apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN corepack enable
RUN corepack prepare pnpm@latest --activate
RUN corepack prepare yarn@stable --activate
###############################################################################
# Bun
###############################################################################
RUN curl -fsSL https://bun.sh/install | bash
ENV BUN_INSTALL=/root/.bun
ENV PATH=$BUN_INSTALL/bin:$PATH
###############################################################################
# Global npm Packages
###############################################################################
RUN npm install -g \
npm \
typescript \
tsx \
vite \
create-vite \
npm-check-updates \
opencode-ai
###############################################################################
# Python
###############################################################################
RUN python3 -m pip install --break-system-packages --upgrade \
pip \
setuptools \
wheel
RUN python3 -m pip install --break-system-packages \
uv \
poetry \
virtualenv \
ipython \
notebook \
jupyter \
black \
ruff \
requests \
httpx \
flask \
fastapi \
uvicorn \
numpy \
pandas \
matplotlib
###############################################################################
# Rust
###############################################################################
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV CARGO_HOME=/root/.cargo
ENV PATH=$CARGO_HOME/bin:$PATH
###############################################################################
# Java
###############################################################################
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH
###############################################################################
# Android
###############################################################################
ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk
RUN mkdir -p /opt/android-sdk
RUN mkdir -p /opt/android-sdk/cmdline-tools
ENV PATH=$ANDROID_HOME/platform-tools:$PATH
ENV PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
###############################################################################
# Workspace
###############################################################################
RUN mkdir -p \
/workspace \
/root/.gradle \
/root/.m2 \
/root/.npm \
/root/.cache/pip \
/root/.local/share/pnpm \
/root/.cargo \
/root/go \
/root/.android \
/root/.config/opencode
WORKDIR /workspace
###############################################################################
#
# Dockerfile (Part 2/2)
#
###############################################################################
###############################################################################
# Environment
###############################################################################
ENV GOPATH=/root/go
ENV CARGO_HOME=/root/.cargo
ENV GRADLE_USER_HOME=/root/.gradle
ENV MAVEN_CONFIG=/root/.m2
ENV PYTHONUNBUFFERED=1
ENV PATH=$JAVA_HOME/bin:\
@@ -47,19 +240,32 @@ $CARGO_HOME/bin:\
$PATH
###############################################################################
# Workspace
###############################################################################
WORKDIR /workspace
###############################################################################
# 复制启动脚本
# Copy Startup Script
###############################################################################
COPY start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh
###############################################################################
# Verify Install
###############################################################################
RUN java -version && \
mvn -version && \
python3 --version && \
node -v && \
npm -v && \
go version && \
rustc --version
###############################################################################
# Expose
###############################################################################
EXPOSE 3004
EXPOSE 3005
###############################################################################
# Health Check
###############################################################################
@@ -67,20 +273,18 @@ RUN chmod +x /usr/local/bin/start.sh
HEALTHCHECK \
--interval=30s \
--timeout=10s \
--start-period=30s \
--start-period=60s \
--retries=5 \
CMD curl -fs http://127.0.0.1:3004/ >/dev/null || exit 1
CMD curl -fsS http://127.0.0.1:3004/ >/dev/null || exit 1
###############################################################################
# Port
# Default Workspace
###############################################################################
EXPOSE 3004
EXPOSE 3005
WORKDIR /workspace
###############################################################################
# Default
# Default Command
###############################################################################
ENTRYPOINT ["/usr/local/bin/start.sh"]