Skip to content

Commit 301aca5

Browse files
committed
feat: add docker build
1 parent 425f2e1 commit 301aca5

File tree

3 files changed

+104
-22
lines changed

3 files changed

+104
-22
lines changed

.github/workflows/docker.yml

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Create and publish a Docker image
2+
on:
3+
push:
4+
branches: ['main']
5+
tags:
6+
- ".*"
7+
pull_request:
8+
paths:
9+
- Dockerfile
10+
- .github/workflows/docker.yml
11+
env:
12+
REGISTRY: ghcr.io
13+
IMAGE_NAME: ${{ github.repository }}
14+
jobs:
15+
build-and-push-image:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
contents: read
19+
packages: write
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v4
23+
24+
- name: Log in to the Container registry
25+
uses: docker/login-action@master
26+
with:
27+
registry: ${{ env.REGISTRY }}
28+
username: ${{ github.actor }}
29+
password: ${{ secrets.GITHUB_TOKEN }}
30+
31+
- name: Extract metadata (tags, labels) for Docker
32+
id: meta-drafter
33+
uses: docker/metadata-action@master
34+
with:
35+
images: ${{ env.REGISTRY }}/${{ github.repository }}/drafter
36+
37+
- name: Extract metadata (tags, labels) for Docker
38+
id: meta
39+
uses: docker/metadata-action@master
40+
with:
41+
images: ${{ env.REGISTRY }}/${{ github.repository }}
42+
43+
- name: Build and push Docker image
44+
uses: docker/build-push-action@master
45+
with:
46+
context: .
47+
push: true
48+
tags: ${{ steps.meta-drafter.outputs.tags }}
49+
labels: ${{ steps.meta-drafter.outputs.labels }}
50+
target: drafter-build
51+
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository }}/drafter:latest
52+
53+
- name: Build and push Docker image
54+
uses: docker/build-push-action@master
55+
with:
56+
context: .
57+
push: true
58+
tags: ${{ steps.meta.outputs.tags }}
59+
labels: ${{ steps.meta.outputs.labels }}
60+
target: phpdraft

Dockerfile

+42-20
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,45 @@
1-
FROM apiaryio/drafter:latest as drafter
2-
FROM composer:latest as composer
3-
4-
FROM php:8.1-cli-alpine as build
5-
RUN apk add --no-cache \
6-
$PHPIZE_DEPS \
7-
openssl-dev
8-
RUN pecl install uopz \
9-
&& docker-php-ext-enable uopz
10-
RUN echo "phar.readonly = 0" > "$PHP_INI_DIR/conf.d/phar.ini"
11-
COPY --from=composer /usr/bin/composer /usr/bin/composer
12-
COPY . /usr/src/phpdraft
1+
FROM debian:bullseye-slim AS drafter-build
2+
RUN apt-get update && \
3+
apt-get install --yes curl ca-certificates
4+
5+
RUN curl -L --fail -o drafter.tar.gz https://github.com/apiaryio/drafter/releases/download/v5.1.0/drafter-v5.1.0.tar.gz
6+
RUN install -d /usr/src/drafter
7+
RUN tar -xvf drafter.tar.gz --strip-components=1 --directory /usr/src/drafter
8+
9+
WORKDIR /usr/src/drafter
10+
11+
RUN apt-get install --yes cmake g++
12+
13+
RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
14+
RUN cmake --build build
15+
RUN cmake --install build
16+
17+
CMD drafter
18+
19+
FROM composer:latest AS composer
20+
1321
WORKDIR /usr/src/phpdraft
14-
RUN /usr/bin/composer install
15-
RUN vendor/bin/phing phar-nightly
16-
COPY build/out/phpdraft-nightly.phar /usr/local/bin/phpdraft
22+
COPY . /usr/src/phpdraft/
23+
RUN composer install --ignore-platform-req=ext-uopz
24+
25+
FROM php:8.3-cli-bullseye AS phpdraft-build
26+
27+
28+
29+
COPY --from=composer /usr/src/phpdraft /usr/src/phpdraft
30+
WORKDIR /usr/src/phpdraft
31+
32+
RUN ./vendor/bin/phing phar-nightly
33+
COPY /usr/src/phpdraft/build/out/phpdraft-nightly.phar /usr/local/bin/phpdraft
34+
RUN chmod +x /usr/local/bin/phpdraft
35+
36+
FROM php:8.3-cli-bullseye AS phpdraft
1737

18-
FROM php:8.1-cli-alpine
1938
LABEL maintainer="Sean Molenaar [email protected]"
20-
RUN apk add --no-cache gcc
21-
COPY --from=drafter /usr/local/bin/drafter /usr/local/bin/drafter
22-
COPY --from=build /usr/local/bin/phpdraft /usr/local/bin/phpdraft
23-
ENTRYPOINT /usr/local/bin/phpdraft -f /tmp/drafter/full_test.apib
39+
40+
COPY --from=phpdraft-build /usr/local/bin/phpdraft /usr/local/bin/phpdraft
41+
COPY --from=drafter-build /usr/local/bin/drafter /usr/local/bin/drafter
42+
43+
RUN ls -al /usr/local/bin/phpdraft
44+
45+
CMD phpdraft

build.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
<exclude name="**/Readme.php"/>
6262
</fileset>
6363
</copy>
64-
<copy todir="${project.basedir}/build/phar/phpdraft/src/QL">
65-
<fileset dir="vendor/ql/uri-template/src">
64+
<copy todir="${project.basedir}/build/phar/phpdraft/src/Rize">
65+
<fileset dir="vendor/rize/uri-template/src">
6666
<include name="**/*.php"/>
6767
</fileset>
6868
</copy>

0 commit comments

Comments
 (0)