| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:46ac5b8ee4c64ad9ebe840abd5619f571a617ac19483764d47d0eeba7907934f in / |
| CMD ["/bin/bash"] |
| ARG OPENCODE_VERSION= |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN |1 OPENCODE_VERSION= /bin/sh -c apt-get update && apt-get install -y --no-install-recommends bash ca-certificates curl tar gzip git openssh-client && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN |1 OPENCODE_VERSION= /bin/sh -c set -eux; if [ -n "$OPENCODE_VERSION" ]; then curl -fsSL https://opencode.ai/install | bash -s -- --version "$OPENCODE_VERSION" --no-modify-path; else curl -fsSL https://opencode.ai/install | bash -s -- --no-modify-path; fi; install -m 0755 /root/.opencode/bin/opencode /usr/local/bin/opencode; rm -rf /root/.opencode; raw_version="$(/usr/local/bin/opencode --version 2>/dev/null | tr -d '\r' | sed -n '1p')"; APP_VERSION="$(printf '%s\n' "$raw_version" | awk '{print $NF}')"; if [ -z "$APP_VERSION" ]; then APP_VERSION="unknown"; fi; echo "APP_VERSION=${APP_VERSION}" > /tmp/app_version.env # buildkit |
| WORKDIR /workspace |
| ENV HOME=/root |
| ENV OPENCODE_HOSTNAME=0.0.0.0 |
| ENV OPENCODE_HOST=0.0.0.0 |
| ENV OPENCODE_PORT=4096 |
| ENV APP_VERSION_FILE=/tmp/app_version.env |
| EXPOSE [4096/tcp] |
| COPY entrypoint.sh /entrypoint.sh # buildkit |
| RUN |1 OPENCODE_VERSION= /bin/sh -c chmod 0755 /entrypoint.sh # buildkit |
| ENTRYPOINT ["/entrypoint.sh"] |
| USER root |
| ARG UBUNTU_APT_MIRROR=mirrors.aliyun.com |
| ARG PYPI_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple |
| ARG PYPI_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn |
| ENV VIRTUAL_ENV=/opt/venv |
| ENV PATH=/opt/venv/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple |
| ENV PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn |
| ENV UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple |
| RUN |3 UBUNTU_APT_MIRROR=mirrors.aliyun.com PYPI_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple PYPI_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn /bin/sh -c sed -i "s|http://archive.ubuntu.com|https://${UBUNTU_APT_MIRROR}|g; s|http://security.ubuntu.com|https://${UBUNTU_APT_MIRROR}|g" /etc/apt/sources.list 2>/dev/null || true && sed -i "s|http://archive.ubuntu.com|https://${UBUNTU_APT_MIRROR}|g; s|http://security.ubuntu.com|https://${UBUNTU_APT_MIRROR}|g" /etc/apt/sources.list.d/*.sources 2>/dev/null || true && apt-get update && apt-get install -y --no-install-recommends curl jq unzip python3 python3-venv && curl -LsSf https://astral.sh/uv/install.sh | sh && ln -s /root/.local/bin/uv /usr/local/bin/uv && ln -sf /usr/bin/python3 /usr/local/bin/python && mkdir -p /root/.config/pip && printf "[global]\nindex-url = %s\ntrusted-host = %s\n" "$PIP_INDEX_URL" "$PIP_TRUSTED_HOST" > /root/.config/pip/pip.conf && uv venv "$VIRTUAL_ENV" && uv pip install --python "$VIRTUAL_ENV/bin/python" --index-url "$UV_INDEX_URL" pip setuptools wheel requests httpx pydantic python-dotenv rich ipython pytest && rm -rf /var/lib/apt/lists/* # buildkit |
| COPY /usr/local/bin/bun /usr/local/bin/bun # buildkit |
| WORKDIR /app |
| ENV NODE_ENV=production |
| ENV HOST=0.0.0.0 |
| ENV PORT=8787 |
| ENV TJWATER_CLI_PATH=./cli/tjwater-cli |
| COPY /app/node_modules ./node_modules # buildkit |
| COPY /app/.opencode/node_modules ./.opencode/node_modules # buildkit |
| COPY package.json bun.lock ./ # buildkit |
| COPY tsconfig.json opencode.json .gitignore ./ # buildkit |
| COPY src ./src # buildkit |
| COPY .opencode ./.opencode # buildkit |
| COPY cli ./cli # buildkit |
| COPY entrypoint.sh /entrypoint.sh # buildkit |
| RUN |3 UBUNTU_APT_MIRROR=mirrors.aliyun.com PYPI_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple PYPI_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn /bin/sh -c chmod +x /entrypoint.sh ./cli/tjwater-cli # buildkit |
| ENTRYPOINT ["/entrypoint.sh"] |
| EXPOSE [8787/tcp] |
| CMD ["bun" "src/server.ts"] |