Added php8-alpine
Build and push PHP 8 container images / Build PHP 8 builder container images (map[os:alpine os_version:3.16 php_ver_short:8 php_version:8.0]) (push) Successful in 1m5s Details
Build and push PHP 8 container images / Build PHP 8 builder container images (map[os:alpine os_version:3.19 php_ver_short:81 php_version:8.1]) (push) Successful in 56s Details
Build and push PHP 8 container images / Build PHP 8 builder container images (map[os:alpine os_version:3.21 php_ver_short:83 php_version:8.2]) (push) Successful in 52s Details
Build and push PHP 8 container images / Build PHP 8 builder container images (map[os:alpine os_version:3.21 php_ver_short:83 php_version:8.3]) (push) Successful in 42s Details

This commit is contained in:
Muhamad Aditya Prima 2024-12-27 19:04:32 +07:00
parent 58c1b67a91
commit 7728b1a728
4 changed files with 340 additions and 0 deletions

View File

@ -0,0 +1,198 @@
name: Build and push PHP 8 container images
on:
push:
branches:
- php8-alpine
jobs:
builder:
name: Build PHP 8 builder container images
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
flavors:
- os: "alpine"
os_version: "3.16"
php_version: "8.0"
php_ver_short: "8"
- os: "alpine"
os_version: "3.19"
php_version: "8.1"
php_ver_short: "81"
- os: "alpine"
os_version: "3.21"
php_version: "8.2"
php_ver_short: "83"
- os: "alpine"
os_version: "3.21"
php_version: "8.3"
php_ver_short: "83"
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Login to quay.io
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ vars.QUAY_USERNAME }}
password: ${{ secrets.QUAY_SECRET }}
# - name: Set up QEMU
# uses: docker/setup-qemu-action@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Build and push php8 builder
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 8/Dockerfile.${{ matrix.flavors.os }}-builder
build-args: |
OS_VERSION=${{ matrix.flavors.os_version }}
PHP_VERSION=${{ matrix.flavors.php_version }}
PHP_VER_SHORT=${{ matrix.flavors.php_ver_short }}
tags: |
quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-builder-${{ matrix.flavors.os }}
# flavors:
# name: Build PHP 8 container images
# runs-on: ubuntu-latest
# needs:
# - builder
# container:
# image: ghcr.io/catthehacker/ubuntu:act-latest
# strategy:
# matrix:
# flavors:
# - os: "alpine"
# os_version: "3.9"
# php_version: "8.2"
# php_ver_short: "8"
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.12"
# php_version: "8.3"
# php_ver_short: "8"
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.15"
# php_version: "8.4"
# php_ver_short: "8"
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.9"
# php_version: "8.2"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.12"
# php_version: "8.3"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.15"
# php_version: "8.4"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.9"
# php_version: "8.2"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.12"
# php_version: "8.3"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.15"
# php_version: "8.4"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.9"
# php_version: "8.2"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "postgresql"
# - os: "alpine"
# os_version: "3.12"
# php_version: "8.3"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "postgresql"
# - os: "alpine"
# os_version: "3.15"
# php_version: "8.4"
# php_ver_short: "8"
# with_server: "apache"
# with_database: "postgresql"
# steps:
# - name: Check out repository code
# uses: actions/checkout@v4
# - name: Login to quay.io
# uses: docker/login-action@v3
# with:
# registry: quay.io
# username: ${{ vars.QUAY_USERNAME }}
# password: ${{ secrets.QUAY_SECRET }}
# # - name: Set up QEMU
# # uses: docker/setup-qemu-action@v3
# - name: Setup Docker buildx
# uses: docker/setup-buildx-action@v3
# - if: ${{ matrix.flavors.with_server == 'false' && matrix.flavors.with_database == 'false' }}
# name: Build and push php8
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 8/Dockerfile.${{ matrix.flavors.os }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# PHP_VERSION=${{ matrix.flavors.php_version }}
# PHP_VER_SHORT=${{ matrix.flavors.php_ver_short }}
# tags: |
# quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-${{ matrix.flavors.os }}
# - if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database == 'false' }}
# name: Build and push php8 with webserver
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 8/Dockerfile.${{ matrix.flavors.os }}-${{ matrix.flavors.with_server }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# PHP_VERSION=${{ matrix.flavors.php_version }}
# PHP_VER_SHORT=${{ matrix.flavors.php_ver_short }}
# WITH_APACHE=true
# tags: |
# quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
# - if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database != 'false' }}
# name: Build and push php8 with webserver and database connector library
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 8/Dockerfile.${{ matrix.flavors.os }}-${{ matrix.flavors.with_server }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# PHP_VERSION=${{ matrix.flavors.php_version }}
# PHP_VER_SHORT=${{ matrix.flavors.php_ver_short }}
# WITH_APACHE=true
# WITH_DATABASE=${{ matrix.flavors.with_database }}
# tags: |
# quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.with_database }}-${{ matrix.flavors.os }}

48
8/Dockerfile.alpine Normal file
View File

@ -0,0 +1,48 @@
# PHP 8.0 == 3.16
# PHP 8.1 == 3.19
# PHP 8.2 == 3.21
# PHP 8.3 == 3.21
ARG OS_VERSION=3.21
ARG PHP_VERSION=8.3
FROM quay.io/sindigilive/php:${PHP_VERSION}-builder-alpine AS builder
ARG WITH_APACHE=false
ARG WITH_DATABASE=false
ENV WITH_APACHE=${WITH_APACHE}
ENV WITH_DATABASE=${WITH_DATABASE}
# Create directory, and install required php app
RUN /bin/sh /tmp/setup.sh; \
/bin/rm -f /tmp/*.sh; \
rm -vrf /var/cache/apk/*
FROM scratch
ARG PHP_VERSION=8.3
ARG PHP_VER_SHORT=8
ENV PHP_VERSION=${PHP_VERSION}
ENV PHP_VER_SHORT=${PHP_VER_SHORT}
LABEL maintainer="Muhamad Aditya Prima <map@sindigilive.com>"
LABEL name="php"
LABEL version="${PHP_VERSION}"
LABEL distribution-scope="public"
#labels for container catalog
LABEL summary="PHP ${PHP_VERSION} on alpine based container image"
LABEL description="Provide php on alpine based container base image"
LABEL io.k8s.description="Very small alpine linux container image"
LABEL io.k8s.display-name="PHP ${PHP_VERSION}"
COPY --from=builder / /
WORKDIR /app
USER php
STOPSIGNAL SIGQUIT
CMD ["/usr/bin/php", "-v"]

View File

@ -0,0 +1,40 @@
# PHP 8.0 == 3.16
# PHP 8.1 == 3.19
# PHP 8.2 == 3.21
# PHP 8.3 == 3.21
ARG OS_VERSION=3.21
FROM quay.io/sindigilive/alpine:${OS_VERSION}
LABEL maintainer="<Muhamad Aditya Prima> map@sindigilive.com"
ARG PHP_VERSION=8.3
ARG PHP_VER_SHORT=83
ARG COMPOSER_VERSION=2.8.4
ENV PHP_VERSION=${PHP_VERSION}
ENV PHP_VER_SHORT=${PHP_VER_SHORT}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
WORKDIR ${SERVER_ROOT}
ADD 8/scripts/alpine-setup.sh /tmp/setup.sh
ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /usr/local/bin/composer
# Create directory, and install required php app
RUN /bin/mkdir -p /app ; \
/usr/sbin/addgroup -g 10000 php ; \
/usr/sbin/adduser -D -u 10000 -G php -s /bin/sh -h $SERVER_ROOT php ; \
/bin/chown -R php:php /app ; \
/sbin/apk add --update --no-cache \
php${PHP_VER_SHORT} php${PHP_VER_SHORT}-common \
php${PHP_VER_SHORT}-cli php${PHP_VER_SHORT}-phar \
php${PHP_VER_SHORT}-iconv php${PHP_VER_SHORT}-mbstring \
php${PHP_VER_SHORT}-json ; \
/bin/chmod +rx /tmp/setup.sh /usr/local/bin/composer ;
# Create symlinks to /usr/bin/php in case it doesn't exists
RUN ln -ns /usr/bin/php${PHP_VER_SHORT} /usr/bin/php ; exit 0
# CLEAN APK CACHES
RUN rm -vrf /var/cache/apk/*

54
8/scripts/alpine-setup.sh Normal file
View File

@ -0,0 +1,54 @@
#!/bin/sh
PHP_LIST="bcmath,bz2,calendar,cgi,
ctype,curl,dba,dom,embed,
enchant,exif,fileinfo,ftp,gd,
gettext,gmp,imap,intl,
ldap,opcache,openssl,
pcntl,pdo,pear,posix,
pspell,shmop,snmp,soap,sockets,
sysvmsg,sysvsem,sysvshm,tidy,tokenizer,
xml,xmlreader,xmlwriter,xmlrpc,xsl,zip"
PHP_DEPS=""
# apache2 configurations
SERVER_ROOT="/app"
APP_ROOT="$SERVER_ROOT/htdocs"
LOG_LEVEL="info"
for i in $(echo $PHP_LIST | tr "," "\n"); do
PHP_DEPS="${PHP_DEPS} php$PHP_VER_SHORT-$i ";
done
/sbin/apk add --update --no-cache $PHP_DEPS;
# Setup apache2
if [ "$WITH_APACHE" == "true" ]; then
/usr/sbin/addgroup -g 10001 apache ;
/usr/sbin/adduser -D -u 10001 -G apache -s /bin/sh -h $APP_ROOT apache ;
/sbin/apk add --update --no-cache apache2 php$PHP_VER_SHORT-apache2 ;
sed -i "s|ServerRoot /var/www|ServerRoot ${SERVER_ROOT}|" /etc/apache2/httpd.conf ;
sed -i "s|ServerAdmin you@example.com| ServerAdmin map@sindigilive.com|" /etc/apache2/httpd.conf ;
sed -i "s|DocumentRoot \"/var/www/localhost/htdocs\"|DocumentRoot \"${APP_ROOT}\"|" /etc/apache2/httpd.conf ;
sed -i "s|Directory \"/var/www/localhost/htdocs\"|Directory \"${APP_ROOT}\"|" /etc/apache2/httpd.conf ;
sed -i "s|AllowOverride None|AllowOverride All|" /etc/apache2/httpd.conf ;
sed -i "s|ErrorLog .*|ErrorLog /dev/stderr \nTransferLog /dev/stdout|" /etc/apache2/httpd.conf ;
sed -i "s|CustomLog .* combined|CustomLog /dev/stdout combined|" /etc/apache2/httpd.conf ;
sed -i "s|LogLevel .*|LogLevel ${LOG_LEVEL}|" /etc/apache2/httpd.conf ;
sed -i "s|#LoadModule rewrite_module|LoadModule rewrite_module|" /etc/apache2/httpd.conf ;
sed -i "s|#LoadModule deflate_module|LoadModule deflate_module|" /etc/apache2/httpd.conf ;
sed -i "s|#LoadModule expires_module|LoadModule expires_module|" /etc/apache2/httpd.conf ;
sed -i "s|/var/www/localhost/cgi-bin/|/app/cgi-bin/|" /etc/apache2/httpd.conf ;
sed -i "s|Require host .example.com|#Require host .example.com|" /etc/apache2/conf.d/info.conf ;
sed -i "s|Require ip 127|Require all granted|" /etc/apache2/conf.d/info.conf ;
sed -i "s|/run/apache2/httpd.pid|${SERVER_ROOT}/run/httpd.pid|" /etc/apache2/conf.d/mpm.conf ;
fi
if [ "$WITH_DATABASE" == "postgresql" ]; then
/sbin/apk add --update --no-cache php$PHP_VER_SHORT-pdo php$PHP_VER_SHORT-pdo_pgsql php$PHP_VER_SHORT-pgsql ;
fi
if [ "$WITH_DATABASE" == "mysql" ]; then
/sbin/apk add --update --no-cache php$PHP_VER_SHORT-pdo php$PHP_VER_SHORT-pdo_mysql php$PHP_VER_SHORT-mysql \
php$PHP_VER_SHORT-mysqli php$PHP_VER_SHORT-mysqlnd ;
fi