# 构建阶段 FROM rust:1.94.1-alpine3.23 AS builder RUN apk add --no-cache musl-dev openssl-dev openssl-libs-static pkgconfig WORKDIR /app # 复制 user-login 代码 COPY services/user-service/user-login/Cargo.toml services/user-service/user-login/Cargo.lock* ./ # 缓存依赖 RUN mkdir -p src && echo 'fn main() {}' > src/main.rs RUN cargo build --release 2>/dev/null || true RUN rm -rf src # 复制真实源码 COPY services/user-service/user-login/src ./src # 重新构建 RUN touch src/main.rs && cargo build --release # 运行阶段 FROM alpine:3.23 AS runtime RUN apk add --no-cache ca-certificates RUN addgroup -g 1000 appuser && adduser -D -u 1000 -G appuser appuser WORKDIR /app COPY --from=builder /app/target/release/user-login /app/user-login RUN chown -R appuser:appuser /app USER appuser EXPOSE 8080 CMD ["./user-login"]