Updated almalinux and alpine base image, testing at php 8.4 images
Build and push PHP container images / Build php cli with composer (map[composer_version:2.8.9 latest:true os:almalinux os_version:9.5 php_major:true php_release:8 php_version:8.4]) (push) Successful in 3m10s Details
Build and push PHP container images / Build php cli with composer (map[composer_version:2.8.9 os:alpine os_label:true os_version:3.21 php_release:8 php_short_version:84 php_version:8.4]) (push) Successful in 55s Details

This commit is contained in:
Muhamad Aditya Prima 2025-05-23 02:02:11 +07:00
parent e9269a86ad
commit e6e1d3029f
10 changed files with 279 additions and 899 deletions

View File

@ -0,0 +1,141 @@
name: Build and push PHP container images
on:
push:
branches:
- master
jobs:
base:
name: Build php cli with composer
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
params:
- os: "alpine"
os_version: "3.21"
os_label: "true"
php_version: "8.4"
php_short_version: "84"
php_release: "8"
composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "8.10"
# php_version: "7.2"
# php_release: "7"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "8.10"
# php_version: "7.3"
# php_release: "7"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "8.10"
# php_version: "7.4"
# php_release: "7"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "9.5"
# php_version: "8.0"
# php_release: "8"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "9.5"
# php_version: "8.1"
# php_release: "8"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "9.5"
# php_version: "8.2"
# php_release: "8"
# composer_version: "2.8.9"
# - os: "almalinux"
# os_version: "9.5"
# php_version: "8.3"
# php_release: "8"
# composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.4"
php_release: "8"
php_major: 'true'
composer_version: "2.8.9"
latest: 'true'
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: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- if: ${{ matrix.params.os_label != 'true' }}
name: Build and push php release
uses: docker/build-push-action@v5
with:
push: true
context: .
file: ${{ matrix.params.php_release }}/Dockerfile.${{ matrix.params.os }}
build-args: |
OS_VERSION=${{ matrix.params.os_version }}
PHP_VERSION=${{ matrix.params.php_version }}
COMPOSER_VERSION=${{ matrix.params.composer_version }}
tags: |
quay.io/teras/php:${{ matrix.params.php_version }}
- if: ${{ matrix.params.os_label == 'true' }}
name: Build and push php release
uses: docker/build-push-action@v5
with:
push: true
context: .
file: ${{ matrix.params.php_release }}/Dockerfile.${{ matrix.params.os }}
build-args: |
OS_VERSION=${{ matrix.params.os_version }}
PHP_VERSION=${{ matrix.params.php_version }}
COMPOSER_VERSION=${{ matrix.params.composer_version }}
tags: |
quay.io/teras/php:${{ matrix.params.php_version }}-${{ matrix.params.os }}
# - if: ${{ matrix.params.latest != 'true' && matrix.params.php_major != 'true' && matrix.params.os_label == 'true' }}
# name: Build and push php release
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: ${{ matrix.params.php_release }}/Dockerfile.${{ matrix.params.os }}
# build-args: |
# OS_VERSION=${{ matrix.params.os_version }}
# PHP_VERSION=${{ matrix.params.php_version }}
# COMPOSER_VERSION=${{ matrix.params.composer_version }}
# tags: |
# quay.io/teras/php:${{ matrix.params.php_version }}
# - if: ${{ matrix.params.php_major == 'true' }}
# name: Build and push php major release
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 8/Dockerfile.${{ matrix.params.os }}
# build-args: |
# OS_VERSION=${{ matrix.params.os_version }}
# PHP_VERSION=${{ matrix.params.php_version }}
# COMPOSER_VERSION=${{ matrix.params.composer_version }}
# tags: |
# quay.io/teras/php:${{ matrix.params.php_release }}
# - if: ${{ matrix.params.latest == 'true' && matrix.params.os_label != 'true' }}
# name: Build and push php latest release
# uses: docker/build-push-action@v5
# with:
# push: true
# context: .
# file: 8/Dockerfile.${{ matrix.params.os }}
# build-args: |
# OS_VERSION=${{ matrix.params.os_version }}
# PHP_VERSION=${{ matrix.params.php_version }}
# COMPOSER_VERSION=${{ matrix.params.composer_version }}
# tags: |
# quay.io/teras/php:${{ matrix.params.php_version }}
# quay.io/teras/php:latest

View File

@ -1,100 +0,0 @@
name: Build and push PHP based on almalinux
on:
push:
branches:
- php-almalinux
jobs:
base:
name: Build php8-almalinux
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
params:
- os: "almalinux"
os_version: "8.10"
php_version: "7.2"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "8.10"
php_version: "7.3"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "8.10"
php_version: "7.4"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.0"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.1"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.2"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.3"
composer_version: "2.8.9"
- os: "almalinux"
os_version: "9.5"
php_version: "8.4"
composer_version: "2.8.9"
latest: 'true'
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: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- if: ${{ matrix.params.latest != 'true' && startsWith(matrix.params.php_version, '8') }}
name: Build and push php 8
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 8/Dockerfile.${{ matrix.params.os }}
build-args: |
OS_VERSION=${{ matrix.params.os_version }}
PHP_VERSION=${{ matrix.params.php_version }}
COMPOSER_VERSION=${{ matrix.params.composer_version }}
tags: |
quay.io/teras/php:${{ matrix.params.php_version }}
- if: ${{ matrix.params.latest != 'true' && startsWith(matrix.params.php_version, '7') }}
name: Build and push php 7
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/Dockerfile.${{ matrix.params.os }}
build-args: |
OS_VERSION=${{ matrix.params.os_version }}
PHP_VERSION=${{ matrix.params.php_version }}
COMPOSER_VERSION=${{ matrix.params.composer_version }}
tags: |
quay.io/teras/php:${{ matrix.params.php_version }}
- if: ${{ matrix.params.latest == 'true' }}
name: Build and push php 8 latest
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 8/Dockerfile.${{ matrix.params.os }}
build-args: |
OS_VERSION=${{ matrix.params.os_version }}
PHP_VERSION=${{ matrix.params.php_version }}
COMPOSER_VERSION=${{ matrix.params.composer_version }}
tags: |
quay.io/teras/php:${{ matrix.params.php_version }}
quay.io/teras/php:8
quay.io/teras/php:latest

View File

@ -1,125 +0,0 @@
name: Build and push PHP 5 container images
on:
push:
branches:
- php5-almalinux
jobs:
build:
name: Build PHP 5 container images
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
flavors:
- os: "almalinux"
os_version: "8.10"
php_version: "5.6"
php_ver_short: "56"
mode: cli
with_server: "false"
with_database: "false"
- os: "almalinux"
os_version: "8.10"
php_version: "5.6"
php_ver_short: "56"
mode: full
with_server: "false"
with_database: "false"
- os: "almalinux"
os_version: "8.10"
php_version: "5.6"
php_ver_short: "56"
mode: debug
with_server: "false"
with_database: "false"
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 php5
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/Dockerfile.${{ matrix.flavors.mode }}-${{ 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/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 php5 with webserver
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/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 php5 with apache2 and database connector library
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/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
# runs-on: ubuntu-latest
# needs:
# - build
# container:
# image: ghcr.io/catthehacker/ubuntu:act-latest
# 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 latest nginx
# uses: docker/build-push-action@v5
# with:
# # platforms: linux/amd64,linux/arm64
# push: true
# context: .
# file: Dockerfile.alpine
# tags: |
# quay.io/sindigilive/nginx:alpine
# quay.io/sindigilive/nginx:latest

View File

@ -1,167 +0,0 @@
name: Build and push PHP 5 container images
on:
push:
branches:
- php5-alpine
jobs:
build:
name: Build PHP 5 container images
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
flavors:
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: cli
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: full
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: debug
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: full
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: full
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: full
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: debug
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: debug
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.6"
php_version: "5.6"
php_ver_short: "5"
mode: debug
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 php5
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/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/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 php5 with webserver
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/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 php5 with apache2 and database connector library
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 5/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
# runs-on: ubuntu-latest
# needs:
# - build
# container:
# image: ghcr.io/catthehacker/ubuntu:act-latest
# 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 latest nginx
# uses: docker/build-push-action@v5
# with:
# # platforms: linux/amd64,linux/arm64
# push: true
# context: .
# file: Dockerfile.alpine
# tags: |
# quay.io/sindigilive/nginx:alpine
# quay.io/sindigilive/nginx:latest

View File

@ -1,194 +0,0 @@
name: Build and push PHP 7 container images
on:
push:
branches:
- php7-alpine
jobs:
builder:
name: Build PHP 7 builder container images
runs-on: ubuntu-latest
container:
image: ghcr.io/catthehacker/ubuntu:act-latest
strategy:
matrix:
flavors:
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
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 php7 builder
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/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 7 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: "7.2"
php_ver_short: "7"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.9"
php_version: "7.2"
php_ver_short: "7"
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.12"
php_version: "7.3"
php_ver_short: "7"
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.15"
php_version: "7.4"
php_ver_short: "7"
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 php7
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/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 php7 with webserver
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/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 php7 with webserver and database connector library
uses: docker/build-push-action@v5
with:
push: true
context: .
file: 7/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 }}

View File

@ -1,223 +0,0 @@
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.16"
php_version: "8.0"
php_ver_short: "8"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.19"
php_version: "8.1"
php_ver_short: "81"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.21"
php_version: "8.2"
php_ver_short: "82"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.21"
php_version: "8.3"
php_ver_short: "83"
with_server: "false"
with_database: "false"
- os: "alpine"
os_version: "3.16"
php_version: "8.0"
php_ver_short: "8"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.19"
php_version: "8.1"
php_ver_short: "81"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.21"
php_version: "8.2"
php_ver_short: "82"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.21"
php_version: "8.3"
php_ver_short: "83"
with_server: "apache"
with_database: "false"
- os: "alpine"
os_version: "3.16"
php_version: "8.0"
php_ver_short: "8"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.19"
php_version: "8.1"
php_ver_short: "81"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.21"
php_version: "8.2"
php_ver_short: "82"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.21"
php_version: "8.3"
php_ver_short: "83"
with_server: "apache"
with_database: "mysql"
- os: "alpine"
os_version: "3.16"
php_version: "8.0"
php_ver_short: "8"
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.19"
php_version: "8.1"
php_ver_short: "81"
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.21"
php_version: "8.2"
php_ver_short: "82"
with_server: "apache"
with_database: "postgresql"
- os: "alpine"
os_version: "3.21"
php_version: "8.3"
php_ver_short: "83"
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 }}

View File

@ -9,10 +9,20 @@ ENV PHP_VERSION=${PHP_VERSION}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
RUN /bin/mkdir -p ${SERVER_ROOT}; \
/sbin/groupadd -g 10000 php; \
/sbin/useradd -u 10000 -g 10000 -s /bin/sh -M -d ${SERVER_ROOT} php; \
/bin/chown -R php:php ${SERVER_ROOT}; \
ENV COMPOSER_HOME=${SERVER_ROOT}/.composer
ENV COMPOSER_ALLOW_SUPERUSER=0
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache
ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor
ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin
USER root
WORKDIR ${SERVER_ROOT}
ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /usr/local/bin/composer
RUN /bin/mkdir -p ${COMPOSER_CACHE_DIR} ${COMPOSER_VENDOR_DIR} ${COMPOSER_BIN_DIR}; \
/bin/chown -R appuser:appuser ${COMPOSER_HOME}; \
/bin/microdnf -y --nodocs install epel-release; \
/bin/microdnf -y upgrade; \
/bin/rpm -Uvh --replacepkgs --replacefiles \
@ -21,11 +31,8 @@ RUN /bin/mkdir -p ${SERVER_ROOT}; \
/bin/microdnf -y module enable php:remi-${PHP_VERSION}; \
/bin/microdnf -y --nodocs install \
php php-cli php-common php-phar \
php-iconv php-mbstring php-json;
ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /usr/local/bin/composer
RUN /bin/chmod +rx /usr/local/bin/composer; \
php-iconv php-mbstring php-json; \
/bin/chmod +rx /usr/local/bin/composer; \
/bin/microdnf clean all; \
/bin/rm -rf /var/cache/yum/*; \
/bin/rm -rf /var/lib/yum/history/*; \
@ -40,10 +47,20 @@ FROM scratch
ARG PHP_VERSION=8.4
ARG COMPOSER_VERSION=2.8.9
# Environment variables for user root
ENV LANG=en_US.UTF-8
ENV PHP_VERSION=${PHP_VERSION}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
ENV COMPOSER_HOME=${SERVER_ROOT}/.composer
ENV COMPOSER_ALLOW_SUPERUSER=0
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache
ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor
ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin
LABEL maintainer="Muhamad Aditya Prima <aditya@teraslink.id>"
LABEL name="php"
LABEL version="${PHP_VERSION}"
@ -57,9 +74,11 @@ LABEL io.k8s.display-name="PHP ${PHP_VERSION}"
COPY --from=builder / /
ENV PATH="${PATH}:${COMPOSER_BIN_DIR}:${COMPOSER_VENDOR_DIR}/bin"
WORKDIR ${SERVER_ROOT}
USER php
USER appuser
STOPSIGNAL SIGQUIT

View File

@ -1,61 +0,0 @@
ARG OS_VERSION=9.5
FROM quay.io/teras/almalinux:${OS_VERSION}-minimal
ARG PHP_VERSION=8.4
ARG PHP_LONG_VERSION=8.4.7
ARG COMPOSER_VERSION=2.8.9
ENV PHP_VERSION=${PHP_VERSION}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
ENV PHP_DEPS \
tar gzip \
gcc gcc-c++ make autoconf bison make
ENV PHP_INI_DIR=/etc/php
WORKDIR /tmp
ADD https://www.php.net/distributions/php-${PHP_LONG_VERSION}.tar.gz /tmp/php-src.tar.gz
RUN /sbin/groupadd -g 10000 php; \
/sbin/useradd -u 10000 -g 10000 -s /bin/sh -d ${SERVER_ROOT} php; \
/bin/microdnf -y --nodocs install ${PHP_DEPS}; \
/bin/tar -xzf /tmp/php-src.tar.gz -C /usr/src;
# /bin/mkdir -p ${SERVER_ROOT}; \
# /sbin/groupadd -g 10000 php; \
# /sbin/useradd -u 10000 -g 10000 -s /bin/sh -d ${SERVER_ROOT} php; \
# /bin/chown -R php:php ${SERVER_ROOT}; \
# /bin/microdnf -y --nodocs install epel-release; \
# /bin/microdnf -y upgrade; \
# /bin/rpm -Uvh --replacepkgs --replacefiles \
# https://rpms.remirepo.net/enterprise/remi-release-9.rpm; \
# /bin/microdnf -y module reset php; \
# /bin/microdnf -y module enable php:remi-${PHP_VERSION}; \
# /bin/microdnf -y --nodocs install \
# php php-cli php-common php-phar \
# php-iconv php-mbstring php-json;
# ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /usr/local/bin/composer
# RUN /bin/chown php:php /usr/local/bin/composer; \
# /bin/chmod +rx /usr/local/bin/composer; \
# /bin/microdnf clean all; \
# /bin/rm -rf /var/cache/yum/*; \
# /bin/rm -rf /var/lib/yum/history/*; \
# /bin/rm -rf /var/lib/yum/yumdb/*; \
# /bin/rm -rf /var/lib/dnf/*;
# Create symlinks to /usr/bin/php in case it doesn't exists
# RUN ln -ns /usr/bin/php${PHP_VERSION} /usr/bin/php; exit 0
# WORKDIR ${SERVER_ROOT}
# USER php
# CMD ["/usr/bin/php", "-v"]
CMD ["/bin/sh"]
STOPSIGNAL SIGQUIT

View File

@ -2,47 +2,89 @@
# PHP 8.1 == 3.19
# PHP 8.2 == 3.21
# PHP 8.3 == 3.21
# PHP 8.4 == 3.21
ARG OS_VERSION=3.21
ARG PHP_VERSION=8.3
FROM quay.io/sindigilive/php:${PHP_VERSION}-builder-alpine AS builder
FROM quay.io/teras/alpine:${OS_VERSION} AS builder
ARG WITH_APACHE=false
ARG WITH_DATABASE=false
ARG PHP_VERSION=8.4
ARG PHP_SHORT_VERSION=84
ARG COMPOSER_VERSION=2.8.9
ENV WITH_APACHE=${WITH_APACHE}
ENV WITH_DATABASE=${WITH_DATABASE}
ENV PHP_VERSION=${PHP_VERSION}
ENV PHP_SHORT_VERSION=${PHP_SHORT_VERSION}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
ENV PHP_VERSION=${PHP_VERSION}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
ENV COMPOSER_HOME=${SERVER_ROOT}/.composer
ENV COMPOSER_ALLOW_SUPERUSER=0
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache
ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor
ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin
USER root
WORKDIR ${SERVER_ROOT}
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/sh /tmp/setup.sh; \
/bin/rm -f /tmp/*.sh; \
rm -vrf /var/cache/apk/*
RUN /bin/mkdir -p ${COMPOSER_CACHE_DIR} ${COMPOSER_VENDOR_DIR} ${COMPOSER_BIN_DIR}; \
/bin/chown -R appuser:appuser ${COMPOSER_HOME}; \
/sbin/apk add --update --no-cache \
php${PHP_SHORT_VERSION} php${PHP_SHORT_VERSION}-common \
php${PHP_SHORT_VERSION}-cli php${PHP_SHORT_VERSION}-phar \
php${PHP_SHORT_VERSION}-iconv php${PHP_SHORT_VERSION}-mbstring \
php${PHP_SHORT_VERSION}-json php${PHP_SHORT_VERSION}-openssl ; \
/bin/chmod +rx /usr/local/bin/composer ;
# Create symlinks to /usr/bin/php in case it doesn't exists
RUN ln -ns /usr/bin/php${PHP_SHORT_VERSION} /usr/bin/php ; exit 0
# CLEAN APK CACHES
RUN rm -vrf /var/cache/apk/*
FROM scratch
ARG PHP_VERSION=8.3
ARG PHP_VER_SHORT=8
ARG PHP_VERSION=8.4
ARG COMPOSER_VERSION=2.8.9
# Environment variables for user root
ENV PHP_VERSION=${PHP_VERSION}
ENV PHP_VER_SHORT=${PHP_VER_SHORT}
ENV COMPOSER_VERSION=${COMPOSER_VERSION}
ENV SERVER_ROOT=/app
LABEL maintainer="Muhamad Aditya Prima <map@sindigilive.com>"
ENV COMPOSER_HOME=${SERVER_ROOT}/.composer
ENV COMPOSER_ALLOW_SUPERUSER=0
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache
ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor
ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin
ENV LANG=en_US.UTF-8
LABEL maintainer="Muhamad Aditya Prima <aditya@teraslink.id>"
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 summary="PHP ${PHP_VERSION} on alpine linux container image"
LABEL description="Provide php on alpine linux container base image"
LABEL io.k8s.description="PHP with composer"
LABEL io.k8s.display-name="PHP ${PHP_VERSION}"
COPY --from=builder / /
WORKDIR /app
WORKDIR ${SERVER_ROOT}
USER php
USER appuser
ENV PATH=${PATH}:${COMPOSER_BIN_DIR}:${COMPOSER_VENDOR_DIR}/bin
STOPSIGNAL SIGQUIT
CMD ["/usr/bin/php", "-v"]
CMD ["/usr/bin/php", "-v"]

48
8/Dockerfile.alpine-bak 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.4
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.4
ARG PHP_SHORT_VERSION=84
ENV PHP_VERSION=${PHP_VERSION}
ENV PHP_SHORT_VERSION=${PHP_SHORT_VERSION}
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"]