diff --git a/.github/workflows/publish-docker.yml b/.github/workflows/publish-docker.yml index b205448f..0ccfc04e 100644 --- a/.github/workflows/publish-docker.yml +++ b/.github/workflows/publish-docker.yml @@ -67,6 +67,7 @@ jobs: uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0 with: context: sync-server + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.ref_type == 'tag' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/sync-server/Dockerfile b/sync-server/Dockerfile index 00d05ea5..df6ba74f 100644 --- a/sync-server/Dockerfile +++ b/sync-server/Dockerfile @@ -1,33 +1,33 @@ -FROM rust:1.89 AS builder +FROM rust:1.89-alpine AS builder WORKDIR /usr/src/backend -RUN apt update && apt install -y musl-tools -RUN cargo install sqlx-cli +# Install build dependencies for Alpine +RUN apk add --no-cache musl-dev pkgconf openssl-dev perl make +# Install sqlx-cli +RUN cargo install sqlx-cli --features=openssl-vendored + +# Setup database and build COPY . . - -RUN sqlx database create --database-url sqlite://db.sqlite3 -RUN sqlx migrate run --source src/app_state/database/migrations --database-url sqlite://db.sqlite3 - -RUN cargo build --release --target x86_64-unknown-linux-musl +RUN sqlx database create --database-url sqlite://db.sqlite3 && \ + sqlx migrate run --source src/app_state/database/migrations --database-url sqlite://db.sqlite3 && \ + cargo build --release # Runtime image FROM alpine:3.22.0 LABEL org.opencontainers.image.authors="andras@schmelczer.dev" -RUN apk add --no-cache curl +RUN apk add --no-cache curl ca-certificates -COPY --from=builder /usr/src/backend/target/x86_64-unknown-linux-musl/release/sync_server /app/sync_server +COPY --from=builder /usr/src/backend/target/release/sync_server /app/sync_server VOLUME /data EXPOSE 3000/tcp WORKDIR /data -HEALTHCHECK \ - --interval=30s \ - --timeout=5s \ +HEALTHCHECK --interval=30s --timeout=5s \ CMD curl -f http://localhost:3000/vaults/fake/ping || exit 1 -ENTRYPOINT ["/app/sync_server"] +ENTRYPOINT ["/app/sync_server"] \ No newline at end of file