diff --git a/backend/services/trading-service/Dockerfile b/backend/services/trading-service/Dockerfile index 434811c1..d3a0a3f2 100644 --- a/backend/services/trading-service/Dockerfile +++ b/backend/services/trading-service/Dockerfile @@ -22,9 +22,9 @@ FROM node:20-alpine AS runner RUN addgroup --system --gid 1001 nodejs && \ adduser --system --uid 1001 -G nodejs nestjs -RUN apk add --no-cache curl tzdata openssl +RUN apk add --no-cache curl tzdata openssl su-exec -RUN mkdir -p /app /app/uploads/c2c-proofs && chown -R nestjs:nodejs /app +RUN mkdir -p /app && chown nestjs:nodejs /app WORKDIR /app USER nestjs @@ -37,7 +37,9 @@ RUN DATABASE_URL="postgresql://user:pass@localhost:5432/db" npx prisma generate COPY --chown=nestjs:nodejs --from=builder /app/dist ./dist -RUN printf '#!/bin/sh\nset -e\necho "Running database migrations..."\nnpx prisma migrate deploy\necho "Starting application..."\nexec node dist/main.js\n' > /app/start.sh && chmod +x /app/start.sh +# entrypoint 以 root 启动 → 修复 volume 权限 → 降权到 nestjs 运行 +USER root +RUN printf '#!/bin/sh\nset -e\n# 修复 Docker volume 挂载权限(volume 首次由 root 创建)\nmkdir -p /app/uploads/c2c-proofs\nchown -R nestjs:nodejs /app/uploads\n# 以 nestjs 用户运行\necho "Running database migrations..."\nsu-exec nestjs npx prisma migrate deploy\necho "Starting application..."\nexec su-exec nestjs node dist/main.js\n' > /app/start.sh && chmod +x /app/start.sh ENV NODE_ENV=production ENV TZ=Asia/Shanghai diff --git a/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart b/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart index c0578243..14a6fa6f 100644 --- a/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart +++ b/frontend/mining-app/lib/presentation/pages/c2c/c2c_market_page.dart @@ -127,12 +127,12 @@ class _C2cMarketPageState extends ConsumerState crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - '可用积分值', + '可用积分股', style: TextStyle(fontSize: 12, color: AppColors.textSecondaryOf(context)), ), const SizedBox(height: 4), Text( - formatAmount(availableCash), + formatAmount(availableShares), style: const TextStyle( fontSize: 18, fontWeight: FontWeight.bold,