- Enforce axum best practices across all 13 workspace crates (max 200 LOC/file, no comments, no unwrap, clean architecture) - Fix domain→infrastructure dependency inversions in imphnen-iam and imphnen-dimentorin - Extract imphnen-storage (MinIO) and imphnen-email (Lettre) as standalone crates - Centralize all config in ENV struct: CDN_URL, CORS_ALLOWED_ORIGINS - Centralize SMTP through imphnen-email; remove dead HackathonConfig - Centralize database: QR crate now shares main DB pool (single DATABASE_URL) - Rename QR users table to qr_users to avoid collision with main users table - Merge imphnen-qr into imphnen-cms/src/qr (13 crates, down from 14) - Restructure imphnen-hackathon flat modules into clean architecture - Remove all stale env vars from .env.example (SurrealDB, QR_JWT, Hackathon infra) - Fix Dockerfile to include all current workspace crates - Bump all crate versions 0.2.0 → 0.3.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
56 lines
1.6 KiB
Docker
56 lines
1.6 KiB
Docker
FROM rust:1.86-alpine AS builder
|
|
|
|
RUN apk add --no-cache \
|
|
curl \
|
|
musl-dev \
|
|
openssl-dev \
|
|
openssl-libs-static \
|
|
pkgconfig
|
|
|
|
WORKDIR /app
|
|
|
|
COPY Cargo.toml Cargo.lock ./
|
|
|
|
RUN mkdir -p \
|
|
imphnen-backend/src \
|
|
imphnen-cms/src \
|
|
imphnen-dimentorin/src \
|
|
imphnen-email/src \
|
|
imphnen-entities/src \
|
|
imphnen-gacha/src \
|
|
imphnen-gateway/src \
|
|
imphnen-hackathon/src \
|
|
imphnen-iam/src \
|
|
imphnen-libs/src \
|
|
imphnen-macros/src \
|
|
imphnen-middleware/src \
|
|
imphnen-storage/src \
|
|
imphnen-utils/src && \
|
|
echo "fn main() {}" > imphnen-backend/src/main.rs && \
|
|
find . -name "src" -type d -exec sh -c 'touch "$1/lib.rs"' _ {} \;
|
|
|
|
COPY imphnen-backend ./imphnen-backend
|
|
COPY imphnen-cms ./imphnen-cms
|
|
COPY imphnen-dimentorin ./imphnen-dimentorin
|
|
COPY imphnen-email ./imphnen-email
|
|
COPY imphnen-entities ./imphnen-entities
|
|
COPY imphnen-gacha ./imphnen-gacha
|
|
COPY imphnen-gateway ./imphnen-gateway
|
|
COPY imphnen-hackathon ./imphnen-hackathon
|
|
COPY imphnen-iam ./imphnen-iam
|
|
COPY imphnen-libs ./imphnen-libs
|
|
COPY imphnen-macros ./imphnen-macros
|
|
COPY imphnen-middleware ./imphnen-middleware
|
|
COPY imphnen-storage ./imphnen-storage
|
|
COPY imphnen-utils ./imphnen-utils
|
|
|
|
RUN RUSTFLAGS="-C target-cpu=generic -C opt-level=s -C panic=abort -C codegen-units=1 -C strip=symbols" \
|
|
cargo build -p imphnen-backend --release && \
|
|
strip target/release/api && \
|
|
upx --best --lzma target/release/api 2>/dev/null || true
|
|
|
|
FROM scratch AS runner
|
|
COPY --from=builder /app/target/release/api /api
|
|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
|
ENTRYPOINT ["/api"]
|