| |
| |
| |
| |
| |
| |
|
|
| 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"] |