From f147a29fdf24d98ff6a2a085937484bc22f72456 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Thu, 14 Mar 2024 13:38:47 +0100 Subject: [PATCH] feat: add docker build --- .github/workflows/docker.yml | 39 ++++++++++++++++++++++++++++ Dockerfile | 50 ++++++++++++++++++++---------------- 2 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..5c457a95 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,39 @@ +name: Create and publish a Docker image +on: + push: + branches: ['release'] + pull_request: + paths: + - Dockerfile + - .github/workflows/docker.yml +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@main + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@main + with: + images: ghcr.io/${{ github.repository }}/drafter + - name: Build and push Docker image + uses: docker/build-push-action@main + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + target: drafter-build \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index feea0441..e799a9c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,29 @@ -FROM apiaryio/drafter:latest as drafter -FROM composer:latest as composer - -FROM php:8.1-cli-alpine as build -RUN apk add --no-cache \ - $PHPIZE_DEPS \ - openssl-dev -RUN pecl install uopz \ - && docker-php-ext-enable uopz -RUN echo "phar.readonly = 0" > "$PHP_INI_DIR/conf.d/phar.ini" -COPY --from=composer /usr/bin/composer /usr/bin/composer -COPY . /usr/src/phpdraft -WORKDIR /usr/src/phpdraft -RUN /usr/bin/composer install -RUN vendor/bin/phing phar-nightly -COPY build/out/phpdraft-nightly.phar /usr/local/bin/phpdraft - -FROM php:8.1-cli-alpine +FROM debian:bullseye-slim as drafter-build +RUN apt-get update && \ + apt-get install --yes curl ca-certificates + +RUN curl -L --fail -o drafter.tar.gz https://github.com/apiaryio/drafter/releases/download/v5.1.0/drafter-v5.1.0.tar.gz +RUN install -d /usr/src/drafter +RUN tar -xvf drafter.tar.gz --strip-components=1 --directory /usr/src/drafter + +WORKDIR /usr/src/drafter + +RUN apt-get install --yes cmake g++ + +RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +RUN cmake --build build +RUN cmake --install build + +CMD drafter + +FROM php:8.3-cli-bullseye + LABEL maintainer="Sean Molenaar sean@seanmolenaar.eu" -RUN apk add --no-cache gcc -COPY --from=drafter /usr/local/bin/drafter /usr/local/bin/drafter -COPY --from=build /usr/local/bin/phpdraft /usr/local/bin/phpdraft -ENTRYPOINT /usr/local/bin/phpdraft -f /tmp/drafter/full_test.apib + +COPY --from=drafter-build /usr/local/bin/drafter /usr/local/bin/drafter +COPY out/phpdraft-2.5.1-1.phar /usr/local/bin/phpdraft + +RUN chmod +x /usr/local/bin/phpdraft +RUN ls -al /usr/local/bin/phpdraft + +CMD phpdraft