- Install opencode-ai@1.17.8 globally via pnpm with build allowance - Copy opencode binary from pnpm store to /usr/local/bin/opencode - Update task command from 'run' to 'run-container' for clarity - Add volume removal before container start in run-container task
38 lines
1.1 KiB
Docker
38 lines
1.1 KiB
Docker
FROM node:22-slim
|
|
|
|
ENV PNPM_HOME="/pnpm"
|
|
ENV PATH="$PNPM_HOME/bin:$PNPM_HOME:$PATH"
|
|
RUN corepack enable && \
|
|
apt-get update && \
|
|
apt-get install -y git hugo caddy curl && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# Install uv for Python package management
|
|
COPY --from=ghcr.io/astral-sh/uv:0.7.21 /uv /uvx /bin/
|
|
|
|
# Install opencode
|
|
ARG OPENCODE_VERSION=1.17.8
|
|
RUN pnpm add -g opencode-ai@${OPENCODE_VERSION} --allow-build=opencode-ai && \
|
|
cp "$(find /pnpm/store -path '*/opencode-linux-x64/*/node_modules/opencode-linux-x64/bin/opencode' -not -path '*baseline*' | head -1)" /usr/local/bin/opencode && \
|
|
chmod +x /usr/local/bin/opencode
|
|
|
|
# Prepare virtual env
|
|
RUN uv venv /app/.venv
|
|
ENV PATH=/app/.venv:$PATH
|
|
|
|
# Create opencode config directory under /app for persistence
|
|
RUN mkdir -p /app/.config/opencode
|
|
ENV OPENCODE_CONFIG_DIR="/app/.config/opencode"
|
|
|
|
COPY ./bin /usr/local/bin
|
|
COPY ./image/entrypoint.sh /
|
|
|
|
EXPOSE 80
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["caddy"]
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost:80/ || exit 1 |