-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add intermediate layer for extension image build.
- Loading branch information
1 parent
768c746
commit 7fedb0d
Showing
3 changed files
with
154 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
name: Build GRPC-Protobuf Base Images | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
build-base: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
max-parallel: 4 | ||
fail-fast: false | ||
matrix: | ||
php_version: [8.3] | ||
alpine_version: [3.20] | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Login to DockerHub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Check if image exists in Docker Hub | ||
id: check-image | ||
run: | | ||
IMAGE_TAG="spryker/grpc-protobuf:${{ matrix.php_version }}-alpine${{ matrix.alpine_version }}" | ||
TOKEN=$(curl -s -u "${{ secrets.DOCKER_USERNAME }}:${{ secrets.DOCKER_PASSWORD }}" \ | ||
"https://auth.docker.io/token?service=registry.docker.io&scope=repository:spryker/grpc-protobuf:pull" | jq -r .token) | ||
EXISTS=$(curl -s -o /dev/null -w "%{http_code}" \ | ||
-H "Authorization: Bearer $TOKEN" \ | ||
"https://registry-1.docker.io/v2/spryker/grpc-protobuf/manifests/${{ matrix.php_version }}-alpine${{ matrix.alpine_version }}") | ||
if [ "$EXISTS" -eq 200 ]; then | ||
echo "Image $IMAGE_TAG already exists in Docker Hub." | ||
echo "exists=true" >> $GITHUB_ENV | ||
else | ||
echo "Image $IMAGE_TAG does not exist. Proceeding with build." | ||
echo "exists=false" >> $GITHUB_ENV | ||
fi | ||
- name: Build and push base image | ||
if: env.exists == 'false' | ||
uses: docker/build-push-action@v5 | ||
with: | ||
push: true | ||
tags: spryker/grpc-protobuf:${{ matrix.php_version }}-alpine${{ matrix.alpine_version }} | ||
file: alpine/extension/Dockerfile | ||
platforms: linux/amd64,linux/arm64 | ||
cache-to: type=gha,mode=max | ||
build-args: | | ||
MAJOR_PHP_VERSION=${{ matrix.php_version }} | ||
ALPINE_VERSION=${{ matrix.alpine_version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# GRPC + Protobuf extension | ||
ARG MAJOR_PHP_VERSION=8.3 | ||
ARG ALPINE_VERSION=3.20 | ||
FROM php:${MAJOR_PHP_VERSION}-fpm-alpine${ALPINE_VERSION} | ||
|
||
# Set environment variables | ||
ENV srcRoot /data | ||
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so | ||
|
||
ARG PHP_RUN_DEPS="\ | ||
freetype \ | ||
gmp \ | ||
gnu-libiconv \ | ||
icu-libs \ | ||
libbz2 \ | ||
libc6-compat \ | ||
libjpeg-turbo \ | ||
libpng \ | ||
libwebp \ | ||
libxml2 \ | ||
libxpm \ | ||
libxslt \ | ||
libzip \ | ||
protobuf \ | ||
grpc" | ||
|
||
ARG PHP_BUILD_DEPS="\ | ||
autoconf \ | ||
bzip2-dev \ | ||
freetype-dev \ | ||
gmp-dev \ | ||
icu-dev \ | ||
icu-data-full \ | ||
libjpeg-turbo-dev \ | ||
libpng-dev \ | ||
libwebp-dev \ | ||
libxml2-dev \ | ||
libxpm-dev \ | ||
libzip-dev \ | ||
postgresql-dev \ | ||
rabbitmq-c-dev \ | ||
protobuf-dev \ | ||
grpc-dev \ | ||
g++" | ||
|
||
ARG PHP_PECL_EXTENSIONS="\ | ||
opentelemetry \ | ||
protobuf \ | ||
grpc" | ||
|
||
ARG ADDITIONAL_PHP_PECL_EXTENSIONS="" | ||
|
||
RUN apk add --no-cache \ | ||
bash \ | ||
coreutils \ | ||
curl \ | ||
git \ | ||
make \ | ||
mysql-client \ | ||
netcat-openbsd \ | ||
openssh \ | ||
postgresql-client \ | ||
procps \ | ||
python3 \ | ||
shadow \ | ||
unzip \ | ||
linux-headers \ | ||
libstdc++ \ | ||
${PHP_RUN_DEPS} \ | ||
&& apk add --no-cache --virtual .php-build-deps ${PHP_BUILD_DEPS} \ | ||
&& MAKEFLAGS="-j$(nproc)" pecl install -o -f ${PHP_PECL_EXTENSIONS} ${ADDITIONAL_PHP_PECL_EXTENSIONS} \ | ||
&& docker-php-ext-enable ${PHP_PECL_EXTENSIONS} \ | ||
&& rm -rf /tmp/pear \ | ||
&& apk del --no-cache .php-build-deps | ||
|
||
RUN mkdir -p ${srcRoot} | ||
|
||
# Set environment variables | ||
ENV srcRoot /data | ||
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so | ||
|
||
WORKDIR ${srcRoot} | ||
|
||
USER root |