diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 00000000..216b4178
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,60 @@
+name: Create and publish a Docker image
+on:
+  push:
+    branches: ['main']
+    tags:
+      - ".*"
+  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@master
+        with:
+          registry: ${{ env.REGISTRY }}
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Extract metadata (tags, labels) for Docker
+        id: meta-drafter
+        uses: docker/metadata-action@master
+        with:
+          images: ${{ env.REGISTRY }}/${{ github.repository }}/drafter
+
+      - name: Extract metadata (tags, labels) for Docker
+        id: meta
+        uses: docker/metadata-action@master
+        with:
+          images: ${{ env.REGISTRY }}/${{ github.repository }}
+
+      - name: Build and push Docker image
+        uses: docker/build-push-action@master
+        with:
+          context: .
+          push: true
+          tags: ${{ steps.meta-drafter.outputs.tags }}
+          labels: ${{ steps.meta-drafter.outputs.labels }}
+          target: drafter-build
+          cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository }}/drafter:latest
+
+      - name: Build and push Docker image
+        uses: docker/build-push-action@master
+        with:
+          context: .
+          push: true
+          tags: ${{ steps.meta.outputs.tags }}
+          labels: ${{ steps.meta.outputs.labels }}
+          target: phpdraft
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index feea0441..11715336 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,23 +1,45 @@
-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
+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 composer:latest AS composer
+
 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
+COPY . /usr/src/phpdraft/
+RUN composer install --ignore-platform-req=ext-uopz
+
+FROM php:8.3-cli-bullseye AS phpdraft-build
+
+
+
+COPY --from=composer /usr/src/phpdraft /usr/src/phpdraft
+WORKDIR /usr/src/phpdraft
+
+RUN ./vendor/bin/phing phar-nightly
+COPY /usr/src/phpdraft/build/out/phpdraft-nightly.phar /usr/local/bin/phpdraft
+RUN chmod +x /usr/local/bin/phpdraft
+
+FROM php:8.3-cli-bullseye AS phpdraft
 
-FROM php:8.1-cli-alpine
 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=phpdraft-build /usr/local/bin/phpdraft /usr/local/bin/phpdraft
+COPY --from=drafter-build /usr/local/bin/drafter /usr/local/bin/drafter
+
+RUN ls -al /usr/local/bin/phpdraft
+
+CMD phpdraft
diff --git a/build.xml b/build.xml
index 08eb0045..4ef8b23d 100644
--- a/build.xml
+++ b/build.xml
@@ -61,8 +61,8 @@
                 <exclude name="**/Readme.php"/>
             </fileset>
         </copy>
-        <copy todir="${project.basedir}/build/phar/phpdraft/src/QL">
-            <fileset dir="vendor/ql/uri-template/src">
+        <copy todir="${project.basedir}/build/phar/phpdraft/src/Rize">
+            <fileset dir="vendor/rize/uri-template/src">
                 <include name="**/*.php"/>
             </fileset>
         </copy>