diff --git a/.gitea/workflows/alpine-winter.yaml b/.gitea/workflows/alpine-winter.yaml index 1b5e34c..d9a10e9 100644 --- a/.gitea/workflows/alpine-winter.yaml +++ b/.gitea/workflows/alpine-winter.yaml @@ -25,6 +25,7 @@ jobs: context: . file: Dockerfile.alpine-php5 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.2.25 PHP_VERSION=5.6 push: true @@ -37,6 +38,7 @@ jobs: context: . file: Dockerfile.alpine-php7 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=7.2 push: true @@ -49,6 +51,7 @@ jobs: context: . file: Dockerfile.alpine-php7 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=7.3 push: true @@ -61,6 +64,7 @@ jobs: context: . file: Dockerfile.alpine-php7 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=7.4 push: true @@ -73,6 +77,7 @@ jobs: context: . file: Dockerfile.alpine build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.0 push: true @@ -85,6 +90,7 @@ jobs: context: . file: Dockerfile.alpine build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.1 push: true @@ -97,6 +103,7 @@ jobs: context: . file: Dockerfile.alpine build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.2 push: true @@ -109,6 +116,7 @@ jobs: context: . file: Dockerfile.alpine build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.3 push: true @@ -121,6 +129,7 @@ jobs: context: . file: Dockerfile.alpine build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.4 push: true diff --git a/.gitea/workflows/ubi9-dockerio.yaml b/.gitea/workflows/ubi9-dockerio.yaml index 90909d7..b87bc60 100644 --- a/.gitea/workflows/ubi9-dockerio.yaml +++ b/.gitea/workflows/ubi9-dockerio.yaml @@ -92,4 +92,94 @@ jobs: aprimediet/composer:2.8.4-php8.4-ubi9 aprimediet/composer:2.8-php8.4-ubi9 aprimediet/composer:2.8-ubi9 - aprimediet/composer:ubi9 \ No newline at end of file + aprimediet/composer:ubi9 + build-micro: + name: Build and push composer on ubi9-micro based image + runs-on: ubuntu-latest + needs: + - build + container: + image: ghcr.io/catthehacker/ubuntu:act-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: docker.io + username: aprimediet + password: ${{ secrets.DOCKER_TOKEN }} + - name: Build and push 2.8 on php7.4 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=7.4 + push: true + tags: | + aprimediet/composer:2.8.4-php7.4-ubi9-micro + aprimediet/composer:2.8-php7.4-ubi9-micro + - name: Build and push 2.8 on php8.0 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.0 + push: true + tags: | + aprimediet/composer:2.8.4-php8.0-ubi9-micro + aprimediet/composer:2.8-php8.0-ubi9-micro + - name: Build and push 2.8 on php8.1 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.1 + push: true + tags: | + aprimediet/composer:2.8.4-php8.1-ubi9-micro + aprimediet/composer:2.8-php8.1-ubi9-micro + - name: Build and push 2.8 on php8.2 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.2 + push: true + tags: | + aprimediet/composer:2.8.4-php8.2-ubi9-micro + aprimediet/composer:2.8-php8.2-ubi9-micro + - name: Build and push 2.8 on php8.3 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.3 + push: true + tags: | + aprimediet/composer:2.8.4-php8.3-ubi9-micro + aprimediet/composer:2.8-php8.3-ubi9-micro + - name: Build and push 2.8 on php8.4 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.4 + push: true + tags: | + aprimediet/composer:2.8.4-php8.4-ubi9-micro + aprimediet/composer:2.8-php8.4-ubi9-micro + aprimediet/composer:2.8-ubi9-micro + aprimediet/composer:ubi9-micro \ No newline at end of file diff --git a/.gitea/workflows/ubi9-winter.yaml b/.gitea/workflows/ubi9-winter.yaml index 8887f2a..4d4b825 100644 --- a/.gitea/workflows/ubi9-winter.yaml +++ b/.gitea/workflows/ubi9-winter.yaml @@ -25,6 +25,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=7.4 push: true @@ -37,6 +38,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.0 push: true @@ -49,6 +51,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.1 push: true @@ -61,6 +64,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.2 push: true @@ -73,6 +77,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.3 push: true @@ -85,6 +90,7 @@ jobs: context: . file: Dockerfile.ubi9 build-args: | + REGISTRY_URL=git.winteraccess.id/docker COMPOSER_VERSION=2.8.4 PHP_VERSION=8.4 push: true @@ -92,4 +98,98 @@ jobs: git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.4-ubi9 git.winteraccess.id/${{ gitea.repository }}:2.8-php8.4-ubi9 git.winteraccess.id/${{ gitea.repository }}:2.8-ubi9 - git.winteraccess.id/${{ gitea.repository }}:ubi9 \ No newline at end of file + git.winteraccess.id/${{ gitea.repository }}:ubi9 + build-micro: + name: Build and push composer on ubi9 based image + runs-on: ubuntu-latest + container: + image: ghcr.io/catthehacker/ubuntu:act-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: git.winteraccess.id + username: ${{ vars.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_TOKEN }} + - name: Build and push 2.8 on php7.4 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=7.4 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php7.4-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php7.4-ubi9-micro + - name: Build and push 2.8 on php8.0 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.0 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.0-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php8.0-ubi9-micro + - name: Build and push 2.8 on php8.1 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.1 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.1-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php8.1-ubi9-micro + - name: Build and push 2.8 on php8.2 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.2 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.2-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php8.2-ubi9-micro + - name: Build and push 2.8 on php8.3 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.3 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.3-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php8.3-ubi9-micro + - name: Build and push 2.8 on php8.4 ubi9-micro + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.ubi9-micro + build-args: | + REGISTRY_URL=git.winteraccess.id/docker + COMPOSER_VERSION=2.8.4 + PHP_VERSION=8.4 + push: true + tags: | + git.winteraccess.id/${{ gitea.repository }}:2.8.4-php8.4-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-php8.4-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:2.8-ubi9-micro + git.winteraccess.id/${{ gitea.repository }}:ubi9-micro \ No newline at end of file diff --git a/Dockerfile.ubi9-micro b/Dockerfile.ubi9-micro index 334adee..aa65c23 100644 --- a/Dockerfile.ubi9-micro +++ b/Dockerfile.ubi9-micro @@ -1,9 +1,82 @@ ARG REGISTRY_URL=docker.io/aprimediet ARG PHP_VERSION=8.4 +ARG UBI_VERSION=9.5 ARG COMPOSER_VERSION=2.8.4 -FROM ${REGISTRY_URL}/php:${PHP_VERSION}-apache-ubi9 AS builder +FROM ${REGISTRY_URL}/composer:${COMPOSER_VERSION}-php${PHP_VERSION}-ubi9 AS builder LABEL maintainer=" aprimediet@gmail.com" -FROM ${REGISTRY_URL}/composer:${PHP_VERSION}-ubi9-micro AS runtime -LABEL maintainer=" aprimediet@gmail.com" \ No newline at end of file +FROM ${REGISTRY_URL}/ubi9:${UBI_VERSION}-micro AS runtime +LABEL maintainer=" aprimediet@gmail.com" + +USER root + +WORKDIR /tmp + +# Set composer home +ENV COMPOSER_HOME=/usr/local/share/composer +ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache + +# Create user and group +RUN echo "composer:x:10001:" >> /etc/group && \ + echo "composer:x:10001:10001:Composer:/build:/sbin/nologin" >> /etc/passwd && \ + echo "composer:!!:20070::::::" >> /etc/shadow + +# Copy required libs +COPY --from=builder /usr/lib64/fipscheck /usr/lib64/fipscheck +COPY --from=builder /usr/lib64/libbz2* /usr/lib64 +COPY --from=builder /usr/lib64/libcrypt* /usr/lib64 +COPY --from=builder /usr/lib64/libcom_err* /usr/lib64 +COPY --from=builder /usr/lib64/libcurl* /usr/lib64 +COPY --from=builder /usr/lib64/libedit* /usr/lib64 +COPY --from=builder /usr/lib64/libexslt* /usr/lib64 +COPY --from=builder /usr/lib64/libgssapi* /usr/lib64 +COPY --from=builder /usr/lib64/libkeyutils* /usr/lib64 +COPY --from=builder /usr/lib64/libkrb5* /usr/lib64 +COPY --from=builder /usr/lib64/libk5crypto* /usr/lib64 +COPY --from=builder /usr/lib64/liblzma* /usr/lib64 +COPY --from=builder /usr/lib64/libnghttp2* /usr/lib64 +COPY --from=builder /usr/lib64/libonig* /usr/lib64 +COPY --from=builder /usr/lib64/libssl* /usr/lib64 +COPY --from=builder /usr/lib64/libxml* /usr/lib64 +COPY --from=builder /usr/lib64/libxslt* /usr/lib64 +COPY --from=builder /usr/lib64/libz* /usr/lib64 + +# Copy required libraries +COPY --from=builder \ + /usr/lib64/libcapstone* /usr/lib64/libdb* /usr/lib64/liblmdb* \ + /usr/lib64/libenchant* /usr/lib64/libffi* /usr/lib64/libgmp* \ + /usr/lib64/libicuio* /usr/lib64/libldap* /usr/lib64/libtokyocabinet* \ + /usr/lib64/libgmodule* /usr/lib64/libicui18n* /usr/lib64/liblber* \ + /usr/lib64/libqdbm* /usr/lib64/libglib* /usr/lib64/libicuuc* \ + /usr/lib64/libsasl2* /usr/lib64/libodbc* /usr/lib64/liblzo2* \ + /usr/lib64/libpcre* /usr/lib64/libicudata* /usr/lib64/libevent* \ + /usr/lib64/libltdl* /usr/lib64/libstdc* /usr/lib64/libpq* \ + /usr/lib64/libnetsnmp* /usr/lib64/libsodium* /usr/lib64/libsqlite* \ + /usr/lib64/libtidy* /usr/lib64/libsybdb* /usr/lib64/libfbclient* \ + /usr/lib64/libhogweed* /usr/lib64/libtommath* /usr/lib64/libbrotlienc* \ + /usr/lib64/libgeos* /usr/lib64/liblz4* /usr/lib64/libmaxminddb* \ + /usr/lib64/libgnutls* /usr/lib64/libbrotlidec* /usr/lib64/libhiredis* \ + /usr/lib64/libnettle* /usr/lib64/libbrotlicommon* /usr/lib64/libp11* \ + /usr/lib64/libidn* /usr/lib64/libunistring* /usr/lib64/libtasn* \ + /usr/lib64 + +# Copy PHP Configuration +COPY --from=builder /etc/php.ini /etc/php.ini +COPY --from=builder /etc/php.d /etc/php.d + +# Copy PHP Libs +COPY --from=builder /usr/lib64/php/modules /usr/lib64/php/modules +COPY --from=builder /var/lib/php /var/lib/php +COPY --from=builder /usr/share/snmp/mibs /usr/share/snmp/mibs + +# Copy Binaries +COPY --from=builder /usr/bin/php /usr/bin/php +COPY --from=builder /usr/bin/php-cgi /usr/bin/php-cgi +COPY --from=builder /usr/bin/phpize /usr/bin/phpize +COPY --from=builder /usr/local/bin/composer /usr/local/bin/composer + +USER composer +WORKDIR /build + +CMD ["/usr/local/bin/composer"] \ No newline at end of file