|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM debian:bookworm-slim |
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
|
ca-certificates \ |
|
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
|
|
|
COPY dist/antigravity-linux-* /app/antigravity |
|
|
COPY dist/public /app/public |
|
|
COPY dist/bin /app/bin |
|
|
COPY dist/config.json /app/config.json |
|
|
|
|
|
|
|
|
RUN chmod +x /app/antigravity && \ |
|
|
(chmod +x /app/bin/* 2>/dev/null || true) |
|
|
|
|
|
|
|
|
RUN mkdir -p /app/data /app/public/images && \ |
|
|
echo "# 敏感配置(只在 .env 中配置)" > /app/.env && \ |
|
|
echo "# 如果不配置以下三项,系统会自动生成随机凭据并在启动时显示" >> /app/.env && \ |
|
|
echo "# API_KEY=your-api-key" >> /app/.env && \ |
|
|
echo "# ADMIN_USERNAME=your-username" >> /app/.env && \ |
|
|
echo "# ADMIN_PASSWORD=your-password" >> /app/.env && \ |
|
|
echo "# JWT_SECRET=your-jwt-secret" >> /app/.env && \ |
|
|
echo "" >> /app/.env && \ |
|
|
echo "# 可选配置" >> /app/.env && \ |
|
|
echo "# PROXY=http://127.0.0.1:7890" >> /app/.env && \ |
|
|
echo "SYSTEM_INSTRUCTION=你是聊天机器人,名字叫萌萌,如同名字这般,你的性格是软软糯糯萌萌哒的,专门为用户提供聊天和情绪价值,协助进行小说创作或者角色扮演" >> /app/.env && \ |
|
|
echo "# IMAGE_BASE_URL=http://your-domain.com" >> /app/.env |
|
|
|
|
|
|
|
|
RUN cat > /app/entrypoint.sh << 'EOF' |
|
|
|
|
|
|
|
|
ENV_FILE="/app/.env" |
|
|
|
|
|
|
|
|
|
|
|
sync_env() { |
|
|
key=$1 |
|
|
|
|
|
if eval "[ \"\${${key}+x}\" ]"; then |
|
|
value=$(eval echo \"\$$key\") |
|
|
|
|
|
if grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then |
|
|
|
|
|
sed -i "s#^${key}=.*#${key}=${value}#" "$ENV_FILE" |
|
|
else |
|
|
|
|
|
echo "${key}=${value}" >> "$ENV_FILE" |
|
|
fi |
|
|
if [ -n "$value" ]; then |
|
|
echo "✓ 已同步环境变量: ${key}=${value}" |
|
|
else |
|
|
echo "✓ 已同步环境变量: ${key}=(空值)" |
|
|
fi |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
sync_env "API_KEY" |
|
|
sync_env "ADMIN_USERNAME" |
|
|
sync_env "ADMIN_PASSWORD" |
|
|
sync_env "JWT_SECRET" |
|
|
sync_env "PROXY" |
|
|
sync_env "SYSTEM_INSTRUCTION" |
|
|
sync_env "IMAGE_BASE_URL" |
|
|
|
|
|
|
|
|
exec /app/antigravity |
|
|
EOF |
|
|
RUN chmod +x /app/entrypoint.sh |
|
|
|
|
|
|
|
|
EXPOSE 8045 |
|
|
|
|
|
|
|
|
CMD ["/app/entrypoint.sh"] |