From ce936c6d29b408ebd5bfe00914d7a6725d7b75cd Mon Sep 17 00:00:00 2001 From: AlphaKeks Date: Wed, 17 Jan 2024 15:41:40 +0100 Subject: [PATCH] tooling: run migrations in container --- Cargo.toml | 4 +--- Dockerfile | 6 +++++- Makefile | 31 ++++++------------------------- docker-entrypoint.sh | 4 ++++ 4 files changed, 16 insertions(+), 29 deletions(-) create mode 100755 docker-entrypoint.sh diff --git a/Cargo.toml b/Cargo.toml index c08ff309..c2ebb56d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -113,9 +113,7 @@ features = [ [dependencies.utoipa-swagger-ui] version = "6.0.0" -features = [ - "axum", -] +features = ["axum"] [dependencies.itertools] workspace = true diff --git a/Dockerfile b/Dockerfile index 7ac5b6c6..9d9c2c75 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,6 +2,7 @@ FROM lukemathwalker/cargo-chef:latest-rust-1.75-slim-bullseye AS chef WORKDIR /kz FROM chef AS planner +RUN cargo install --locked --no-default-features --features mysql sqlx-cli COPY Cargo.toml . COPY crates crates COPY src src @@ -33,6 +34,9 @@ RUN apt-get update \ && ln -s /usr/games/steamcmd /bin/steamcmd \ && steamcmd +quit +COPY docker-entrypoint.sh /docker-entrypoint.sh +COPY --from=planner /usr/local/cargo/bin/sqlx /bin/sqlx COPY --from=builder /kz/target/release/cs2kz-api /bin/cs2kz-api +COPY ./database/migrations ./migrations -ENTRYPOINT ["/bin/cs2kz-api"] +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Makefile b/Makefile index 6b3becd7..287a105b 100644 --- a/Makefile +++ b/Makefile @@ -4,12 +4,12 @@ export DATABASE_PORT ?= "8070" -default: - @make db - @echo "Waiting for the database to spin up..." - @sleep 10s - @make migrations - @make api +api: + @echo "Building API container..." + @docker compose build cs2kz-api + @echo "Running API..." + @docker compose up -d --wait cs2kz-api + @docker compose logs --follow cs2kz-api db: @echo "Starting database container..." @@ -37,25 +37,6 @@ db-connect-root: -P $(DATABASE_PORT) \ -D cs2kz -migrations: - @echo "Running migrations..." - @$(if $(shell command -v sqlx 2>/dev/null), make migrations-sqlx, make migrations-shell) \ - -migrations-sqlx: - @sqlx migrate run \ - --source ./database/migrations/ \ - --database-url $(DATABASE_URL) - -migrations-shell: - ./scripts/run-migrations.sh - -api: - @echo "Building API container..." - @docker compose build cs2kz-api - @echo "Running API..." - @docker compose up -d --wait cs2kz-api - @docker compose logs --follow cs2kz-api - api-spec: @echo "Generating OpenAPI docs..." cargo run --package spec-generator -- --output api-spec.json diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 00000000..941df2dc --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +sqlx migrate run +cs2kz-api