diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..959f073 --- /dev/null +++ b/.env.production @@ -0,0 +1,14 @@ +# 生产环境配置 - 复制到服务器的 /amos/memory/.env + +# JWT 密钥 (请修改为随机字符串) +JWT_SECRET=memory-app-jwt-secret-2025 + +# 服务器公网地址 +BASE_URL=https://x.amos.us.kg + +# Cloudflare R2 +R2_ACCOUNT_ID=ebf33b5ee4eb26f32af0c6e06102e000 +R2_ACCESS_KEY_ID=8acbc8a9386d60d0e8dac6bd8165c618 +R2_ACCESS_KEY_SECRET=72935e23b5b4be8fda99008e75285e8ac778f8926656c42780b25785bb149443 +R2_BUCKET_NAME=memory +R2_PUBLIC_URL= diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..2c925ac --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,80 @@ +# Memory Server 部署指南 + +## 本地构建镜像 + +```bash +# 进入 server 目录 +cd server + +# 构建 linux/amd64 镜像 +docker build --platform linux/amd64 -t memory-server:latest . + +# 导出为 tar 文件 +docker save memory-server:latest -o memory-server.tar +``` + +## 上传到服务器 + +```bash +# 上传镜像和配置文件 +scp memory-server.tar user@your-server:/amos/memory/ +scp docker-compose.yml user@your-server:/amos/memory/ +scp .env.production user@your-server:/amos/memory/.env +``` + +## 服务器部署 + +```bash +# SSH 登录服务器 +ssh user@your-server + +# 进入项目目录 +cd /amos/memory + +# 创建数据目录 +mkdir -p data + +# 加载镜像 +docker load -i memory-server.tar + +# 启动服务 +docker compose up -d + +# 查看日志 +docker compose logs -f + +# 删除镜像文件(可选) +rm memory-server.tar +``` + +## 常用命令 + +```bash +# 查看状态 +docker compose ps + +# 重启服务 +docker compose restart + +# 停止服务 +docker compose down + +# 查看日志 +docker compose logs -f +``` + +## 更新部署 + +本地重新构建镜像后: + +```bash +# 本地 +docker save memory-server:latest -o memory-server.tar +scp memory-server.tar user@your-server:/amos/memory/ + +# 服务器 +cd /amos/memory +docker compose down +docker load -i memory-server.tar +docker compose up -d +``` diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 16c37e5..5a3924b 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -16,7 +16,7 @@ android { versionCode = 1 versionName = "1.0.0" - buildConfigField("String", "API_BASE_URL", "\"http://192.168.0.100:8080/api/\"") + buildConfigField("String", "API_BASE_URL", "\"https://x.amos.us.kg/api/\"") } signingConfigs { diff --git a/docker-compose.yml b/docker-compose.yml index 1091dd4..841b647 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,17 +2,20 @@ version: '3.8' services: memory: - build: ./server + image: memory-server:latest + # build: ./server container_name: memory-server restart: unless-stopped ports: - - "8080:8080" + - "6600:8080" volumes: - ./data:/app/data environment: - SERVER_ADDR=:8080 - DB_PATH=/app/data/memory.db - JWT_SECRET=${JWT_SECRET:-change-me-in-production} + - BASE_URL=${BASE_URL:-http://localhost:8080} + - LOCAL_UPLOAD_PATH= - R2_ACCOUNT_ID=${R2_ACCOUNT_ID} - R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID} - R2_ACCESS_KEY_SECRET=${R2_ACCESS_KEY_SECRET} diff --git a/server/Dockerfile b/server/Dockerfile index 24b7feb..88021e9 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,17 +1,21 @@ -FROM golang:1.21-alpine AS builder +FROM --platform=linux/amd64 golang:1.21-alpine AS builder + +RUN apk add --no-cache gcc musl-dev sqlite-dev WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . -RUN CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -o memory . +RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o memory-server . -FROM alpine:latest -RUN apk --no-cache add ca-certificates sqlite +FROM --platform=linux/amd64 alpine:latest +RUN apk --no-cache add ca-certificates sqlite-libs WORKDIR /app -COPY --from=builder /app/memory . +COPY --from=builder /app/memory-server . + +RUN mkdir -p /app/data EXPOSE 8080 -CMD ["./memory"] +CMD ["./memory-server"]