34ba4dc6ed
- solitaire_server: Axum auth, sync push/pull, leaderboard, daily challenge, account deletion, JWT middleware, rate limiting via tower_governor, SQLite migrations, health endpoint - solitaire_server: expose build_test_router (no rate limiting) so integration tests work without a peer IP in oneshot requests - solitaire_sync: SyncPayload, merge logic, shared API types - solitaire_data: SyncProvider trait, LocalOnlyProvider, SolitaireServerClient, auth_tokens keyring integration, blanket Box<dyn SyncProvider> impl - solitaire_data/settings: derive Default on SyncBackend (clippy fix) - .sqlx/: offline query cache so server compiles without a live DB - sqlx: removed non-existent "offline" feature flag - keyring v2: fixed Entry::new() returning Result<Entry> - sqlx 0.8: all SQLite TEXT columns wrapped in Option<T> - Integration tests: max_connections(1) on in-memory pool so all connections share the same schema All 191 tests pass; cargo clippy -D warnings clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
33 lines
922 B
Docker
33 lines
922 B
Docker
# Stage 1 — builder
|
|
# Compiles the solitaire_server binary in release mode.
|
|
# Requires a pre-generated .sqlx/ query cache (run `cargo sqlx prepare --workspace`
|
|
# before building the image so sqlx macros work without a live database).
|
|
FROM rust:slim AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y pkg-config libssl-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . .
|
|
|
|
# Tell sqlx to use the cached query metadata instead of a live database.
|
|
ENV SQLX_OFFLINE=true
|
|
|
|
RUN cargo build --release -p solitaire_server
|
|
|
|
# Stage 2 — runtime
|
|
# Minimal image that only contains the compiled binary and its runtime deps.
|
|
FROM debian:bookworm-slim
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y libssl3 ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /app/target/release/solitaire_server /usr/local/bin/solitaire_server
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["/usr/local/bin/solitaire_server"]
|