Added builder image for all build

This commit is contained in:
Muhamad Aditya Prima 2024-12-27 13:59:57 +07:00
parent 4e294414b8
commit 5554649963
4 changed files with 225 additions and 179 deletions

View File

@ -6,8 +6,8 @@ on:
- php7-alpine
jobs:
build:
name: Build PHP 7 container images
builder:
name: Build PHP 7 builder container images
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
@ -15,113 +15,17 @@ jobs:
matrix:
flavors:
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: cli
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
mode: full
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
mode: cli
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
mode: full
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: cli
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: full
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
mode: full
with_server: "apache"
with_database: "postgresql"
steps:
- name: Check out repository code
uses: actions/checkout@v4
@ -135,58 +39,134 @@ jobs:
# 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 php7
- name: Build and push php7 builder
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/Dockerfile.${{ matrix.flavors.os }}
file: 7/Dockerfile.${{ matrix.flavors.os }}-builder
build-args: |
OS_VERSION=${{ matrix.flavors.os_version }}
FLAVOR=${{ matrix.flavors.mode }}
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.mode }}-${{ matrix.flavors.os }}
- if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database == 'false' }}
name: Build and push php7 with webserver
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/Dockerfile.${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
build-args: |
OS_VERSION=${{ matrix.flavors.os_version }}
FLAVOR=${{ matrix.flavors.mode }}
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.mode }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
- if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database != 'false' }}
name: Build and push php7 with apache2 and database connector library
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/Dockerfile.${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
build-args: |
OS_VERSION=${{ matrix.flavors.os_version }}
FLAVOR=${{ matrix.flavors.mode }}
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.mode }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.with_database }}-${{ matrix.flavors.os }}
# build-latest:
# name: Build latest nginx alpine based container images
quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-builder-${{ matrix.flavors.os }}
# flavors:
# name: Build PHP 7 container images
# runs-on: ubuntu-latest
# needs:
# - build
# container:
# image: ghcr.io/catthehacker/ubuntu:act-latest
# strategy:
# matrix:
# flavors:
# - os: "alpine"
# os_version: "3.15"
# php_version: "7.4"
# php_ver_short: "7"
# mode: cli
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.15"
# php_version: "7.4"
# php_ver_short: "7"
# mode: full
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.15"
# php_version: "7.4"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.15"
# php_version: "7.4"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.15"
# php_version: "7.4"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "postgresql"
# - os: "alpine"
# os_version: "3.12"
# php_version: "7.3"
# php_ver_short: "7"
# mode: cli
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.12"
# php_version: "7.3"
# php_ver_short: "7"
# mode: full
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.12"
# php_version: "7.3"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.12"
# php_version: "7.3"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.12"
# php_version: "7.3"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "postgresql"
# - os: "alpine"
# os_version: "3.9"
# php_version: "7.2"
# php_ver_short: "7"
# mode: cli
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.9"
# php_version: "7.2"
# php_ver_short: "7"
# mode: full
# with_server: "false"
# with_database: "false"
# - os: "alpine"
# os_version: "3.9"
# php_version: "7.2"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "false"
# - os: "alpine"
# os_version: "3.9"
# php_version: "7.2"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "mysql"
# - os: "alpine"
# os_version: "3.9"
# php_version: "7.2"
# php_ver_short: "7"
# mode: full
# with_server: "apache"
# with_database: "postgresql"
# steps:
# - name: Check out repository code
# uses: actions/checkout@v4
@ -200,13 +180,48 @@ jobs:
# # uses: docker/setup-qemu-action@v3
# - name: Setup Docker buildx
# uses: docker/setup-buildx-action@v3
# - name: Build and push latest nginx
# - if: ${{ matrix.flavors.with_server == 'false' && matrix.flavors.with_database == 'false' }}
# name: Build and push php7
# uses: docker/build-push-action@v5
# with:
# # platforms: linux/amd64,linux/arm64
# push: true
# context: .
# file: Dockerfile.alpine
# file: 7/Dockerfile.${{ matrix.flavors.os }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# FLAVOR=${{ matrix.flavors.mode }}
# PHP_VERSION=${{ matrix.flavors.php_version }}
# PHP_VER_SHORT=${{ matrix.flavors.php_ver_short }}
# tags: |
# quay.io/sindigilive/nginx:alpine
# quay.io/sindigilive/nginx:latest
# quay.io/sindigilive/php:${{ matrix.flavors.php_version }}-${{ matrix.flavors.mode }}-${{ matrix.flavors.os }}
# - if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database == 'false' }}
# name: Build and push php7 with webserver
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 7/Dockerfile.${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# FLAVOR=${{ matrix.flavors.mode }}
# 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.mode }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
# - if: ${{ matrix.flavors.with_server != 'false' && matrix.flavors.with_database != 'false' }}
# name: Build and push php7 with apache2 and database connector library
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 7/Dockerfile.${{ matrix.flavors.with_server }}-${{ matrix.flavors.os }}
# build-args: |
# OS_VERSION=${{ matrix.flavors.os_version }}
# FLAVOR=${{ matrix.flavors.mode }}
# 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.mode }}-${{ matrix.flavors.with_server }}-${{ matrix.flavors.with_database }}-${{ matrix.flavors.os }}

View File

@ -0,0 +1,43 @@
# PHP 7.2 == 3.9
# PHP 7.3 == 3.12
# PHP 7.4 == 3.15
ARG OS_VERSION=3.15
FROM quay.io/sindigilive/alpine:${OS_VERSION} AS builder
LABEL maintainer="<Muhamad Aditya Prima> map@sindigilive.com"
ARG WITH_APACHE=false
ARG WITH_DATABASE=false
ARG PHP_VERSION=7.4
ARG PHP_VER_SHORT=7
ARG COMPOSER_VERSION=2.8.4
ENV WITH_APACHE=${WITH_APACHE}
ENV WITH_DATABASE=${WITH_DATABASE}
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 7/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 +x /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/*

View File

@ -4,7 +4,7 @@ PHP_LIST="bcmath,bz2,calendar,cgi,
ctype,curl,dba,dom,embed,
enchant,exif,fileinfo,ftp,gd,
gettext,gmp,imap,intl,
json,ldap,opcache,openssl,
ldap,opcache,openssl,
pcntl,pdo,pear,posix,
pspell,shmop,snmp,soap,sockets,
sysvmsg,sysvsem,sysvshm,tidy,tokenizer,
@ -15,17 +15,7 @@ SERVER_ROOT="/app"
APP_ROOT="$SERVER_ROOT/htdocs"
LOG_LEVEL="info"
/usr/sbin/addgroup -g 10000 php ;
/usr/sbin/adduser -D -u 10000 -G php -s /bin/sh -h $SERVER_ROOT php ;
# Setup php flavor
if [[ "$FLAVOR" == "debug" ]]; then
LOG_LEVEL="debug"
/sbin/apk add --update --no-cache php$PHP_VER_SHORT-dbg \
php$PHP_VER_SHORT-phpdbg php$PHP_VER_SHORT-dev;
fi
if [ "$FLAVOR" == "full" ] || [ "$FLAVOR" == "debug" ]; then
if [ "$FLAVOR" == "full" ] then
for i in $(echo $PHP_LIST | tr "," "\n"); do
PHP_DEPS="${PHP_DEPS} php$PHP_VER_SHORT-$i ";
done
@ -35,7 +25,6 @@ fi
# Only setup apache with full flavor parameters
if [ "$WITH_APACHE" == "true" ]; then
if [ "$FLAVOR" == "full" ] || [ "$FLAVOR" == "debug" ]; 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 ;
@ -55,7 +44,6 @@ if [ "$WITH_APACHE" == "true" ]; then
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
fi
if [ "$WITH_DATABASE" == "postgresql" ]; then