diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e1c08d7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM rust:1.92 AS builder + +WORKDIR /app +COPY . . + +# Build the release binary +RUN cargo build --release -p template-api + +FROM debian:bookworm-slim + +WORKDIR /app + +# Install OpenSSL (required for many Rust networking crates) and CA certificates +RUN apt-get update && apt-get install -y libssl3 ca-certificates && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /app/target/release/template-api . + + +# Create data directory for SQLite +RUN mkdir -p /app/data + +ENV DATABASE_URL=sqlite:///app/data/template.db +ENV SESSION_SECRET=supersecretchangeinproduction + +EXPOSE 3000 + +CMD ["./template-api"] diff --git a/template-infra/src/db.rs b/template-infra/src/db.rs index d5a618f..facfd9a 100644 --- a/template-infra/src/db.rs +++ b/template-infra/src/db.rs @@ -2,17 +2,15 @@ pub use k_core::db::{DatabaseConfig, DatabasePool}; pub async fn run_migrations(pool: &DatabasePool) -> Result<(), sqlx::Error> { match pool { + #[cfg(feature = "sqlite")] DatabasePool::Sqlite(pool) => { + // Point specifically to the sqlite folder sqlx::migrate!("../migrations_sqlite").run(pool).await?; } #[cfg(feature = "postgres")] - DatabasePool::Postgres(_) => { - // Postgres migrations would go here - tracing::warn!("Postgres migrations not implemented in template yet"); - // Pass through the types from the core library - // This allows you to change k-core later without breaking imports in template-infra - // The `pub use` statement cannot be placed inside a match arm. - // It is already present at the top of the file. + DatabasePool::Postgres(pool) => { + // Point specifically to the postgres folder + sqlx::migrate!("../migrations_postgres").run(pool).await?; } } Ok(())