diff --git a/.gitea/workflows/php7-alpine.yaml b/.gitea/workflows/php7-alpine.yaml index f644950..a92709b 100644 --- a/.gitea/workflows/php7-alpine.yaml +++ b/.gitea/workflows/php7-alpine.yaml @@ -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 }} \ No newline at end of file diff --git a/7/Dockerfile.apache-alpine b/7/Dockerfile.alpine-apache similarity index 100% rename from 7/Dockerfile.apache-alpine rename to 7/Dockerfile.alpine-apache diff --git a/7/Dockerfile.alpine-builder b/7/Dockerfile.alpine-builder new file mode 100644 index 0000000..9ad1121 --- /dev/null +++ b/7/Dockerfile.alpine-builder @@ -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=" 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/* \ No newline at end of file diff --git a/7/scripts/alpine-setup.sh b/7/scripts/alpine-setup.sh index e9b33bf..8e36604 100644 --- a/7/scripts/alpine-setup.sh +++ b/7/scripts/alpine-setup.sh @@ -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,27 +25,25 @@ 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 ; + /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 + 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