File size: 1,420 Bytes
6c7338b f0e18a2 c79782b f0e18a2 fff456b 0f2d026 a4c1999 c79782b 6c7338b c79782b 6c7338b c79782b a4c1999 6c7338b 55285aa 6c7338b a4c1999 55285aa edb0bce f7728bf 96f3567 a4c1999 edb0bce a4c1999 496b622 6c7338b 0f2d026 55285aa a4c1999 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# ---------- 1. 基础镜像 ----------
FROM node:20
# ---------- 2. 系统级依赖 ----------
RUN apt-get update && apt-get install -y git curl cron && rm -rf /var/lib/apt/lists/*
# ---------- 3. 跳过用户创建,使用 root 用户 ----------
# 直接使用 root 用户运行所有服务
# ---------- 5. 全局安装 opencode-ai ----------
# 安装完先验证二进制是否存在,若不存在就手动解压
RUN npm install -g opencode-ai@latest && \
if [ ! -f /usr/local/lib/node_modules/opencode-ai/node_modules/opencode-linux-x64/bin/opencode ]; then \
cd /usr/local/lib/node_modules/opencode-ai && \
npm run postinstall; \
fi
# ---------- 6. 工作目录 ----------
WORKDIR /app
COPY package*.json ./
COPY . /app
RUN if [ -f package.json ]; then npm ci --only=production; fi
# ---------- 8. 启动脚本 ----------
RUN mkdir -p /usr/local/bin
RUN printf '#!/bin/sh\n\
echo "Starting OpenCode AI Web Server ..."\n\
# 启动 cron 服务\n\
cron && \
echo "Cron started successfully"\n\
# 启动 opencode 服务\n\
exec /usr/local/bin/opencode serve --hostname 0.0.0.0 --port 7860\n' > /usr/local/bin/start.sh && \
chmod +x /usr/local/bin/start.sh
# ---------- 9. 端口与健康检查 ----------
EXPOSE 7860
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:7860/health || exit 1
CMD ["/usr/local/bin/start.sh"] |