From 49c06822ee39eecd02d8906f58a42836067ff5a0 Mon Sep 17 00:00:00 2001 From: Matthew Baggett Date: Sat, 29 May 2021 22:54:10 +0200 Subject: [PATCH] Feature/rebuild for better caching (#3) * Rebuilding for better caching * Rebuilding for better caching. Squash this commit. * Paths to dockerfiles changed. * Rebuilding for better caching. Squash this commit. * Rebuilding for better caching. Squash this commit. * Refactoring * Refactoring * fixing the screaming about duplicates in apt sources. * Vanity tagging * Vanity tagging * Try vanity again. * re-enable all versions and variants --- .github/workflows/build.yml | 238 +++++---- .gitignore | 3 +- Dockerfile.Core | 57 +++ Dockerfile => Dockerfile.Flavours | 175 +------ Dockerfile.Marshall | 24 + Dockerfile.Node | 92 ++++ Makefile | 556 ++-------------------- docker-compose.yml | 125 ++++- marshall/installers/000_apt.sh | 18 +- marshall/installers/001_bash.sh | 0 marshall/installers/002_timezone.sh | 0 marshall/installers/003_dos2unix.sh | 0 marshall/installers/050_runit.sh | 0 marshall/installers/100_cron.sh | 0 marshall/installers/101_rsyslog.sh | 0 marshall/installers/102_logrotate.sh | 0 marshall/installers/900_utils.sh | 0 marshall/installers/901_package_report.sh | 0 marshall/installers/999_cleanup.sh | 0 marshall/installers/install | 6 +- 20 files changed, 452 insertions(+), 842 deletions(-) create mode 100644 Dockerfile.Core rename Dockerfile => Dockerfile.Flavours (56%) create mode 100644 Dockerfile.Marshall create mode 100644 Dockerfile.Node mode change 100644 => 100755 marshall/installers/000_apt.sh mode change 100644 => 100755 marshall/installers/001_bash.sh mode change 100644 => 100755 marshall/installers/002_timezone.sh mode change 100644 => 100755 marshall/installers/003_dos2unix.sh mode change 100644 => 100755 marshall/installers/050_runit.sh mode change 100644 => 100755 marshall/installers/100_cron.sh mode change 100644 => 100755 marshall/installers/101_rsyslog.sh mode change 100644 => 100755 marshall/installers/102_logrotate.sh mode change 100644 => 100755 marshall/installers/900_utils.sh mode change 100644 => 100755 marshall/installers/901_package_report.sh mode change 100644 => 100755 marshall/installers/999_cleanup.sh mode change 100644 => 100755 marshall/installers/install diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e009f77..8be2001 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,15 +10,24 @@ jobs: lint: name: Lint docker files runs-on: ubuntu-20.04 - if: "!contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + dockerfile: + - Dockerfile.Core + - Dockerfile.Flavours + - Dockerfile.Marshall + - Dockerfile.Node steps: - uses: actions/checkout@master - uses: brpaz/hadolint-action@master + with: + dockerfile: ${{ matrix.dockerfile }} build-marshall: - needs: [lint] + name: "Build Marshall" + needs: [ lint ] runs-on: ubuntu-20.04 - if: "!contains(github.event.head_commit.message, 'ci skip')" steps: - uses: actions/checkout@v1 - uses: docker/setup-qemu-action@v1 @@ -45,27 +54,26 @@ jobs: name: Build & Push with: context: . + file: Dockerfile.Marshall target: marshall platforms: linux/amd64,linux/arm64 push: true - tags: benzine/marshall:latest + tags: | + benzine/marshall:latest build-php-core: + name: "Build PHP Core" needs: [ lint, build-marshall ] runs-on: ubuntu-20.04 - if: "!contains(github.event.head_commit.message, 'ci skip')" strategy: fail-fast: false matrix: - onbuild: - - '' - # - '-onbuild' version: #- "7.0" #- "7.1" #- "7.2" - #- "7.3" - #- "7.4" + - "7.3" + - "7.4" - "8.0" env: PHP_PACKAGES_70: git mariadb-client php7.0-apcu php7.0-bcmath php7.0-bz2 php7.0-cli php7.0-curl php7.0-gd php7.0-imap php7.0-imagick php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-memcache php7.0-memcached php7.0-mongodb php7.0-mysql php7.0-opcache php7.0-pgsql php7.0-phpdbg php7.0-pspell php7.0-redis php7.0-soap php7.0-sqlite php7.0-xdebug php7.0-xml php7.0-zip postgresql-client @@ -90,7 +98,70 @@ jobs: id: build_args with: result-encoding: string - script: return `PHP_PACKAGES=${{ steps.vars.outputs.php_packages }}\nPHP_VERSION=${{ matrix.version }}` + script: return `PHP_PACKAGES=${{ steps.vars.outputs.php_packages }}\nPHP_VERSION=${{ matrix.version }}\nPHP_CORE_VERSION=benzine/php:core-${{ matrix.version }}` + - uses: actions/checkout@v1 + - uses: docker/setup-qemu-action@v1 + name: Setup QEmu + - uses: docker/setup-buildx-action@v1 + name: Setup Docker Buildx + - uses: docker/login-action@v1 + name: Login to Docker Hub + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + - uses: docker/build-push-action@v2 + name: Build & Push + with: + context: . + file: Dockerfile.Core + target: php-core + platforms: linux/amd64,linux/arm64 + push: true + tags: | + benzine/php:core-${{ matrix.version }} + build-args: | + ${{ steps.build_args.outputs.result }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + build-php-flavours: + name: "Build PHP Flavours" + needs: [ build-php-core ] + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + variant: + - cli + - nginx + - apache + onbuild: + - '' + # - '-onbuild' + version: + #- "7.0" + #- "7.1" + #- "7.2" + - "7.3" + - "7.4" + - "8.0" + steps: + - name: Mangle Envs + id: vars + run: | + VERSION=$(echo "${{ matrix.version }}" | tr -d '.') + PACKAGE_LIST=PHP_PACKAGES_$VERSION + echo ::set-output name=php_packages::${!PACKAGE_LIST} + - name: Show mangled envs + run: | + echo "Packages to be installed:" + echo ${{ steps.vars.outputs.php_packages }} + - uses: actions/github-script@v3 + name: Build Args + id: build_args + with: + result-encoding: string + script: return `PHP_PACKAGES=${{ steps.vars.outputs.php_packages }}\nPHP_VERSION=${{ matrix.version }}\nPHP_CORE_VERSION=benzine/php:core-${{ matrix.version }}` - uses: actions/checkout@v1 - uses: docker/setup-qemu-action@v1 name: Setup QEmu @@ -108,125 +179,48 @@ jobs: key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - - name: Setup Marshall - run: | - git rev-parse --short HEAD > marshall/marshall_version - date '+%Y-%m-%d %H:%M:%S' > marshall/marshall_build_date - hostname > marshall/marshall_build_host - uses: docker/build-push-action@v2 name: Build & Push with: context: . - target: php-core + file: Dockerfile.Flavours + target: php-${{ matrix.variant }} platforms: linux/amd64,linux/arm64 push: true - tags: benzine/php:core-${{ matrix.version }}${{ matrix.onbuild }} + tags: | + benzine/php:${{ matrix.variant }}-${{ matrix.version }}${{ matrix.onbuild }} build-args: | ${{ steps.build_args.outputs.result }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache -# build-php-flavours: -# needs: [lint, build-marshall] -# runs-on: ubuntu-20.04 -# if: "!contains(github.event.head_commit.message, 'ci skip')" -# strategy: -# fail-fast: false -# matrix: -# variant: -# - cli -# - nginx -# - apache -# onbuild: -# - '' -# # - '-onbuild' -# version: -# #- "7.0" -# #- "7.1" -# #- "7.2" -# #- "7.3" -# #- "7.4" -# - "8.0" -# env: -# PHP_PACKAGES_70: git mariadb-client php7.0-apcu php7.0-bcmath php7.0-bz2 php7.0-cli php7.0-curl php7.0-gd php7.0-imap php7.0-imagick php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-memcache php7.0-memcached php7.0-mongodb php7.0-mysql php7.0-opcache php7.0-pgsql php7.0-phpdbg php7.0-pspell php7.0-redis php7.0-soap php7.0-sqlite php7.0-xdebug php7.0-xml php7.0-zip postgresql-client -# PHP_PACKAGES_71: git mariadb-client php7.1-apcu php7.1-bcmath php7.1-bz2 php7.1-cli php7.1-curl php7.1-gd php7.1-imap php7.1-imagick php7.1-intl php7.1-json php7.1-ldap php7.1-mbstring php7.1-mcrypt php7.1-memcache php7.1-memcached php7.1-mongodb php7.1-mysql php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-redis php7.1-soap php7.1-sqlite php7.1-xdebug php7.1-xml php7.1-zip postgresql-client -# PHP_PACKAGES_72: git mariadb-client php7.2-apcu php7.2-bcmath php7.2-bz2 php7.2-cli php7.2-curl php7.2-gd php7.2-imap php7.2-imagick php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-memcache php7.2-memcached php7.2-mongodb php7.2-mysql php7.2-opcache php7.2-pgsql php7.2-phpdbg php7.2-pspell php7.2-redis php7.2-soap php7.2-sqlite php7.2-xdebug php7.2-xml php7.2-zip postgresql-client -# PHP_PACKAGES_73: git mariadb-client php7.3-apcu php7.3-bcmath php7.3-bz2 php7.3-cli php7.3-curl php7.3-gd php7.3-imap php7.3-imagick php7.3-intl php7.3-json php7.3-ldap php7.3-mbstring php7.3-memcache php7.3-memcached php7.3-mongodb php7.3-mysql php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-redis php7.3-soap php7.3-sqlite php7.3-xdebug php7.3-xml php7.3-zip postgresql-client -# PHP_PACKAGES_74: git mariadb-client php7.4-apcu php7.4-bcmath php7.4-bz2 php7.4-cli php7.4-curl php7.4-gd php7.4-imap php7.4-imagick php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-memcache php7.4-mongodb php7.4-mysql php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-redis php7.4-soap php7.4-sqlite php7.4-xdebug php7.4-xml php7.4-zip postgresql-client -# PHP_PACKAGES_80: git mariadb-client php8.0-apcu php8.0-bcmath php8.0-bz2 php8.0-cli php8.0-curl php8.0-gd php8.0-imap php8.0-imagick php8.0-intl php8.0-ldap php8.0-mbstring php8.0-memcache php8.0-mysql php8.0-opcache php8.0-pgsql php8.0-phpdbg php8.0-pspell php8.0-redis php8.0-soap php8.0-sqlite php8.0-xdebug php8.0-xml php8.0-zip postgresql-client -# steps: -# - name: Mangle Envs -# id: vars -# run: | -# VERSION=$(echo "${{ matrix.version }}" | tr -d '.') -# PACKAGE_LIST=PHP_PACKAGES_$VERSION -# echo ::set-output name=php_packages::${!PACKAGE_LIST} -# - name: Show mangled envs -# run: | -# echo "Packages to be installed:" -# echo ${{ steps.vars.outputs.php_packages }} -# - uses: actions/github-script@v3 -# name: Build Args -# id: build_args -# with: -# result-encoding: string -# script: return `PHP_PACKAGES=${{ steps.vars.outputs.php_packages }}\nPHP_VERSION=${{ matrix.version }}` -# - uses: actions/checkout@v1 -# - uses: docker/setup-qemu-action@v1 -# name: Setup QEmu -# - uses: docker/setup-buildx-action@v1 -# name: Setup Docker Buildx -# - uses: docker/login-action@v1 -# name: Login to Docker Hub -# with: -# username: ${{ secrets.DOCKER_HUB_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_PASSWORD }} -# - name: Cache Docker layers -# uses: actions/cache@v2 -# with: -# path: /tmp/.buildx-cache -# key: ${{ runner.os }}-buildx-${{ github.sha }} -# restore-keys: | -# ${{ runner.os }}-buildx- -# - name: Setup Marshall -# run: | -# git rev-parse --short HEAD > marshall/marshall_version -# date '+%Y-%m-%d %H:%M:%S' > marshall/marshall_build_date -# hostname > marshall/marshall_build_host -# - uses: docker/build-push-action@v2 -# name: Build & Push -# with: -# context: . -# target: php-${{ matrix.variant }} -# platforms: linux/amd64,linux/arm64 -# push: true -# tags: benzine/php:${{ matrix.variant }}-${{ matrix.version }}${{ matrix.onbuild }} -# build-args: | -# ${{ steps.build_args.outputs.result }} -# cache-from: type=local,src=/tmp/.buildx-cache -# cache-to: type=local,dest=/tmp/.buildx-cache -# -# vanity-tags: -# needs: [ build-php ] -# runs-on: ubuntu-20.04 -# env: -# latest-stable-version: "7.4" -# strategy: -# fail-fast: false -# matrix: -# variant: -# - cli -# - nginx -# - apache -# steps: -# - uses: docker/login-action@v1 -# name: Login to Docker Hub -# with: -# username: ${{ secrets.DOCKER_HUB_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_PASSWORD }} -# - name: Retag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} to benzine/php:${{ matrix.variant }} -# run: | -# docker pull benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} -# docker tag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} benzine/php:${{ matrix.variant }} -# docker push benzine/php:${{ matrix.variant }} -# + vanity-tags: + name: Vanity Tags + needs: [ build-php-flavours ] + runs-on: ubuntu-20.04 + env: + latest-stable-version: "7.4" + strategy: + fail-fast: false + matrix: + variant: + - cli + - nginx + - apache + steps: + - uses: docker/login-action@v1 + name: Login to Docker Hub + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + - name: Retag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} to benzine/php:${{ matrix.variant }} + run: | + docker pull benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} + docker tag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} benzine/php:${{ matrix.variant }} + docker push benzine/php:${{ matrix.variant }} + docker tag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} gone/php:${{ matrix.variant }}-${{ env.latest-stable-version }} + docker push gone/php:${{ matrix.variant }}-${{ env.latest-stable-version }} + docker tag benzine/php:${{ matrix.variant }}-${{ env.latest-stable-version }} gone/php:${{ matrix.variant }} + docker push gone/php:${{ matrix.variant }} + + diff --git a/.gitignore b/.gitignore index 5b005e9..14536a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .idea marshall/marshall_* Makefile.working -Dockerfile.* -qemu-*-static* \ No newline at end of file +qemu-*-static* diff --git a/Dockerfile.Core b/Dockerfile.Core new file mode 100644 index 0000000..4a428ea --- /dev/null +++ b/Dockerfile.Core @@ -0,0 +1,57 @@ +# hadolint ignore=DL3007 +FROM benzine/marshall:latest AS php-core +ARG PHP_PACKAGES +COPY php-core/install-report.sh /usr/bin/install-report +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +RUN echo "APT::Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/80-retries && \ + echo "Acquire::http::No-Cache=true;" > /etc/apt/apt.conf.d/80-no-cache && \ + echo "Acquire::http::Pipeline-Depth=0;" > /etc/apt/apt.conf.d/80-no-pipeline && \ + apt-get -qq update && \ + apt-get -yqq install --no-install-recommends \ + python3-software-properties \ + software-properties-common \ + && \ + echo "PHP packages to install:" && echo $PHP_PACKAGES && \ + add-apt-repository -y ppa:ondrej/php && \ + apt-get -qq update && \ + apt-get -yqq install --no-install-recommends $PHP_PACKAGES &&\ + apt-get remove -yqq \ + software-properties-common \ + python-apt-common \ + python3-software-properties \ + python3.5 python3.5-minimal libpython3.5-minimal \ + && \ + apt-get autoremove -yqq && \ + apt-get clean && \ + curl https://getcomposer.org/composer-stable.phar --output /usr/local/bin/composer && \ + chmod +x /usr/local/bin/composer /usr/bin/install-report && \ + /usr/local/bin/composer --version && \ + /usr/bin/install-report && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log && \ + rm -rf /usr/bin/mariabackup \ + /usr/bin/mysql_embedded \ + /usr/bin/mysql_find_rows \ + /usr/bin/mysql_fix_extensions \ + /usr/bin/mysql_waitpid \ + /usr/bin/mysqlaccess \ + /usr/bin/mysqlanalyze \ + /usr/bin/mysqlcheck \ + /usr/bin/mysqldump \ + /usr/bin/mysqldumpslow \ + /usr/bin/mysqlimport \ + /usr/bin/mysqloptimize \ + /usr/bin/mysqlrepair \ + /usr/bin/mysqlreport \ + /usr/bin/mysqlshow \ + /usr/bin/mysqlslap \ + /usr/bin/mytop + +FROM php-core AS php-cli + +# Install a funky cool repl. +RUN composer global require -q psy/psysh:@stable && \ + ln -s /root/.composer/vendor/psy/psysh/bin/psysh /usr/local/bin/repl && \ + /usr/local/bin/repl -v && \ + composer clear-cache + +COPY php+cli/psysh-config.php /root/.config/psysh/config.php diff --git a/Dockerfile b/Dockerfile.Flavours similarity index 56% rename from Dockerfile rename to Dockerfile.Flavours index f89bf6b..508abaf 100644 --- a/Dockerfile +++ b/Dockerfile.Flavours @@ -1,77 +1,5 @@ -FROM ubuntu:bionic AS marshall - -LABEL maintainer="Matthew Baggett " - -ENV DEBIAN_FRONTEND="teletype" \ - TERM=xterm-256color \ - COMPOSER_ALLOW_SUPERUSER=1 \ - COLOUR_FAIL='\e[31m' \ - COLOUR_SUCCESS='\e[32m' \ - COLOUR_NONE='\e[39m' \ - DEFAULT_TZ='Europe/London' - - -CMD ["runsvdir", "-P", "/etc/service"] - -WORKDIR /app -ENV PATH="/app:/app/bin:/app/vendor/bin:${PATH}" - -COPY ./marshall/ / - -RUN chmod +x /installers/install && \ - mv /marshall_* /etc && \ - /installers/install && \ - rm -rf /installers - -# hadolint ignore=DL3007 -FROM benzine/marshall:latest AS php-core -ARG PHP_PACKAGES -COPY php-core/install-report.sh /usr/bin/install-report -SHELL ["/bin/bash", "-o", "pipefail", "-c"] -RUN echo "APT::Acquire::Retries \"5\";" > /etc/apt/apt.conf.d/80-retries && \ - echo "Acquire::http::No-Cache=true;" > /etc/apt/apt.conf.d/80-no-cache && \ - echo "Acquire::http::Pipeline-Depth=0;" > /etc/apt/apt.conf.d/80-no-pipeline && \ - apt-get -qq update && \ - apt-get -yqq install --no-install-recommends \ - python3-software-properties \ - software-properties-common \ - && \ - echo "PHP packages to install:" && echo $PHP_PACKAGES && \ - add-apt-repository -y ppa:ondrej/php && \ - apt-get -qq update && \ - apt-get -yqq install --no-install-recommends $PHP_PACKAGES &&\ - apt-get remove -yqq \ - software-properties-common \ - python-apt-common \ - python3-software-properties \ - python3.5 python3.5-minimal libpython3.5-minimal \ - && \ - apt-get autoremove -yqq && \ - apt-get clean && \ - curl https://getcomposer.org/composer-stable.phar --output /usr/local/bin/composer && \ - chmod +x /usr/local/bin/composer /usr/bin/install-report && \ - /usr/local/bin/composer --version && \ - /usr/bin/install-report && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log && \ - rm -rf /usr/bin/mariabackup \ - /usr/bin/mysql_embedded \ - /usr/bin/mysql_find_rows \ - /usr/bin/mysql_fix_extensions \ - /usr/bin/mysql_waitpid \ - /usr/bin/mysqlaccess \ - /usr/bin/mysqlanalyze \ - /usr/bin/mysqlcheck \ - /usr/bin/mysqldump \ - /usr/bin/mysqldumpslow \ - /usr/bin/mysqlimport \ - /usr/bin/mysqloptimize \ - /usr/bin/mysqlrepair \ - /usr/bin/mysqlreport \ - /usr/bin/mysqlshow \ - /usr/bin/mysqlslap \ - /usr/bin/mytop - -FROM php-core AS php-cli +ARG PHP_CORE_VERSION +FROM ${PHP_CORE_VERSION} AS php-cli # Install a funky cool repl. RUN composer global require -q psy/psysh:@stable && \ @@ -90,7 +18,8 @@ ONBUILD RUN (composer install; exit 0) && \ (composer dumpautoload -o; exit 0) && \ /usr/bin/install-report -FROM php-core AS php-nginx +ARG PHP_CORE_VERSION +FROM ${PHP_CORE_VERSION} AS php-nginx ARG PHP_VERSION ARG PHP_MEMORY_LIMIT=128M ARG PHP_DATA_MAX_SIZE=1024M @@ -203,7 +132,8 @@ ONBUILD RUN (composer install; exit 0) && \ (composer dumpautoload -o; exit 0) && \ /usr/bin/install-report -FROM php-core AS php-apache +ARG PHP_CORE_VERSION +FROM ${PHP_CORE_VERSION} AS php-apache ARG PHP_VERSION RUN apt-get -qq update && \ apt-get -yqq install --no-install-recommends \ @@ -251,96 +181,3 @@ ONBUILD COPY ./ /app ONBUILD RUN (composer install; exit 0) && \ (composer dumpautoload -o; exit 0) && \ /usr/bin/install-report - -FROM marshall AS nodejs - -ARG NODE_VERSION -ARG YARN_VERSION -ARG PATH="/app/node_modules/.bin:${PATH}" - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] -RUN mkdir ~/.gnupg && \ - echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \ - apt-get -qq update && \ - apt-get -yqq install --no-install-recommends \ - lsb-core \ - gnupg \ - && \ - \ - ARCH= && \ - dpkgArch="$(dpkg --print-architecture)" && \ - case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - # gpg keys listed at https://github.com/nodejs/node#release-keys - && set -ex \ - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ - 4ED778F539E3634C779C87C6D7062848A1AB005C \ - A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ - B9E2F5981AA6E0CD28160D9FF13993A75599653C \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ - && set -ex \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - \ - && apt-get autoremove -y \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log - -FROM nodejs AS nodejs-compiler - -RUN apt-get -qq update && \ - apt-get -yqq install --no-install-recommends \ - python \ - build-essential \ - && \ - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log - -FROM nodejs AS nodejs-onbuild - -ONBUILD COPY ./ /app - -FROM nodejs-compiler AS nodejs-compiler-onbuild - -ONBUILD COPY ./ /app - diff --git a/Dockerfile.Marshall b/Dockerfile.Marshall new file mode 100644 index 0000000..548d622 --- /dev/null +++ b/Dockerfile.Marshall @@ -0,0 +1,24 @@ +FROM ubuntu:bionic AS marshall + +LABEL maintainer="Matthew Baggett " + +ENV DEBIAN_FRONTEND="teletype" \ + TERM=xterm-256color \ + COMPOSER_ALLOW_SUPERUSER=1 \ + COLOUR_FAIL='\e[31m' \ + COLOUR_SUCCESS='\e[32m' \ + COLOUR_NONE='\e[39m' \ + DEFAULT_TZ='Europe/London' + + +CMD ["runsvdir", "-P", "/etc/service"] + +WORKDIR /app +ENV PATH="/app:/app/bin:/app/vendor/bin:${PATH}" + +COPY marshall/installers /installers +COPY marshall/etc /etc +COPY marshall/usr /usr + +RUN /installers/install && \ + rm -rf /marshall /installers diff --git a/Dockerfile.Node b/Dockerfile.Node new file mode 100644 index 0000000..6fd7d3a --- /dev/null +++ b/Dockerfile.Node @@ -0,0 +1,92 @@ +FROM marshall AS nodejs + +ARG NODE_VERSION +ARG YARN_VERSION +ARG PATH="/app/node_modules/.bin:${PATH}" + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +RUN mkdir ~/.gnupg && \ + echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \ + apt-get -qq update && \ + apt-get -yqq install --no-install-recommends \ + lsb-core \ + gnupg \ + && \ + \ + ARCH= && \ + dpkgArch="$(dpkg --print-architecture)" && \ + case "${dpkgArch##*-}" in \ + amd64) ARCH='x64';; \ + ppc64el) ARCH='ppc64le';; \ + s390x) ARCH='s390x';; \ + arm64) ARCH='arm64';; \ + armhf) ARCH='armv7l';; \ + i386) ARCH='x86';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac \ + # gpg keys listed at https://github.com/nodejs/node#release-keys + && set -ex \ + && for key in \ + 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ + FD3A5288F042B6850C66B31F09FE44734EB7990E \ + 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ + DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + B9AE9905FFD7803F25714661B63B535A4C206CA9 \ + 77984A986EBC2AA786BC0F66B01FBB92821C587A \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + 4ED778F539E3634C779C87C6D7062848A1AB005C \ + A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ + B9E2F5981AA6E0CD28160D9FF13993A75599653C \ + ; do \ + gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ + gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ + gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ + && set -ex \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ + gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ + gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ + && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && mkdir -p /opt \ + && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + \ + && apt-get autoremove -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log + +FROM nodejs AS nodejs-compiler + +RUN apt-get -qq update && \ + apt-get -yqq install --no-install-recommends \ + python \ + build-essential \ + && \ + apt-get autoremove -y && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log + +FROM nodejs AS nodejs-onbuild + +ONBUILD COPY ./ /app + +FROM nodejs-compiler AS nodejs-compiler-onbuild + +ONBUILD COPY ./ /app + diff --git a/Makefile b/Makefile index de62ed6..d528331 100644 --- a/Makefile +++ b/Makefile @@ -1,529 +1,39 @@ -# ▄▄▄▄ ▓█████ ███▄ █ ▒███████▒ ██▓ ███▄ █ ▓█████ -# ▓█████▄ ▓█ ▀ ██ ▀█ █ ▒ ▒ ▒ ▄▀░▓██▒ ██ ▀█ █ ▓█ ▀ -# ▒██▒ ▄██▒███ ▓██ ▀█ ██▒░ ▒ ▄▀▒░ ▒██▒▓██ ▀█ ██▒▒███ -# ▒██░█▀ ▒▓█ ▄ ▓██▒ ▐▌██▒ ▄▀▒ ░░██░▓██▒ ▐▌██▒▒▓█ ▄ -# ░▓█ ▀█▓░▒████▒▒██░ ▓██░▒███████▒░██░▒██░ ▓██░░▒████▒ -# ░▒▓███▀▒░░ ▒░ ░░ ▒░ ▒ ▒ ░▒▒ ▓░▒░▒░▓ ░ ▒░ ▒ ▒ ░░ ▒░ ░ -# ▒░▒ ░ ░ ░ ░░ ░░ ░ ▒░░░▒ ▒ ░ ▒ ▒ ░░ ░░ ░ ▒░ ░ ░ ░ -# ░▄▄▄▄ ░ ░▄▄▄░ ▒░ ░ ░██████░▓█████ ░ ░ ██▓ ███▄░▄███▓ ▄▄▄ ▄████ ▓█████ -# ▓█████▄ ▒████▄░ ▒██ ▒░▓█ ▀ ░ ▓██▒▓██▒▀█▀ ██▒▒████▄ ██▒ ▀█▒▓█ ▀ -# ▒██▒ ▄██▒██ ▀█▄ ░ ▓██▄ ▒███ ▒██▒▓██ ▓██░▒██ ▀█▄ ▒██░▄▄▄░▒███ -# ▒██░█▀ ░██▄▄▄▄██ ▒ ██▒▒▓█ ▄ ░██░▒██ ▒██ ░██▄▄▄▄██ ░▓█ ██▓▒▓█ ▄ -# ░▓█ ▀█▓ ▓█ ▓██▒▒██████▒▒░▒████▒ ░██░▒██▒ ░██▒ ▓█ ▓██▒░▒▓███▀▒░▒████▒ -# ░▒▓███▀▒ ▒▒ ▓▒█░▒ ▒▓▒ ▒ ░░░ ▒░ ░ ░▓ ░ ▒░ ░ ░ ▒▒ ▓▒█░ ░▒ ▒ ░░ ▒░ ░ -# ▒░▒ ░ ▒ ▒▒ ░░ ░▒ ░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒ ▒▒ ░ ░ ░ ░ ░ ░ -# ░ ░ ░ ▒ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ +BUILD:=docker build -# Prettyprinting: http://patorjk.com/software/taag/#p=display&c=bash&f=Bloody&t=Example -CMD_BUILD=docker buildx build --platform linux/arm64,linux/amd64 -BUILDX_OUTPUT=--push -PHP_PACKAGES_70=mariadb-client \ - php7.0-apcu \ - php7.0-bcmath \ - php7.0-bz2 \ - php7.0-cli \ - php7.0-curl \ - php7.0-gd \ - php7.0-imap \ - php7.0-imagick \ - php7.0-intl \ - php7.0-json \ - php7.0-ldap \ - php7.0-mbstring \ - php7.0-mcrypt \ - php7.0-memcache \ - php7.0-memcached \ - php7.0-mongodb \ - php7.0-mysql \ - php7.0-opcache \ - php7.0-pgsql \ - php7.0-pspell \ - php7.0-redis \ - php7.0-soap \ - php7.0-sqlite \ - php7.0-xdebug \ - php7.0-xml \ - php7.0-zip \ - postgresql-client +docker-marshall: + $(BUILD) \ + --tag benzine/marshall:latest \ + --target marshall \ + --file Dockerfile.Marshall \ + . -PHP_PACKAGES_71=mariadb-client \ - php7.1-apcu \ - php7.1-bcmath \ - php7.1-bz2 \ - php7.1-cli \ - php7.1-curl \ - php7.1-gd \ - php7.1-imap \ - php7.1-imagick \ - php7.1-intl \ - php7.1-json \ - php7.1-ldap \ - php7.1-mbstring \ - php7.1-mcrypt \ - php7.1-memcache \ - php7.1-memcached \ - php7.1-mongodb \ - php7.1-mysql \ - php7.1-opcache \ - php7.1-pgsql \ - php7.1-pspell \ - php7.1-redis \ - php7.1-soap \ - php7.1-sqlite \ - php7.1-xdebug \ - php7.1-xml \ - php7.1-zip \ - postgresql-client +docker-php-core: + $(BUILD) \ + --build-arg PHP_PACKAGES="git mariadb-client php${PHP_VERSION}-apcu php${PHP_VERSION}-bcmath php${PHP_VERSION}-bz2 php${PHP_VERSION}-cli php${PHP_VERSION}-curl php${PHP_VERSION}-gd php${PHP_VERSION}-imap php${PHP_VERSION}-imagick php${PHP_VERSION}-intl php${PHP_VERSION}-ldap php${PHP_VERSION}-mbstring php${PHP_VERSION}-memcache php${PHP_VERSION}-mysql php${PHP_VERSION}-opcache php${PHP_VERSION}-pgsql php${PHP_VERSION}-phpdbg php${PHP_VERSION}-pspell php${PHP_VERSION}-redis php${PHP_VERSION}-soap php${PHP_VERSION}-sqlite php${PHP_VERSION}-xdebug php${PHP_VERSION}-xml php${PHP_VERSION}-zip postgresql-client" \ + --build-arg PHP_VERSION=${PHP_VERSION} \ + --tag benzine/php:core-${PHP_VERSION} \ + --target php-core \ + --file Dockerfile.Core \ + . -PHP_PACKAGES_72=mariadb-client \ - php7.2-apcu \ - php7.2-bcmath \ - php7.2-bz2 \ - php7.2-cli \ - php7.2-curl \ - php7.2-gd \ - php7.2-imap \ - php7.2-imagick \ - php7.2-intl \ - php7.2-json \ - php7.2-ldap \ - php7.2-mbstring \ - php7.2-memcache \ - php7.2-memcached \ - php7.2-mongodb \ - php7.2-mysql \ - php7.2-opcache \ - php7.2-pgsql \ - php7.2-pspell \ - php7.2-redis \ - php7.2-soap \ - php7.2-sqlite \ - php7.2-xdebug \ - php7.2-xml \ - php7.2-zip \ - postgresql-client +docker-php-flavour: + $(BUILD) \ + --build-arg PHP_CORE_VERSION=benzine/php:core-${PHP_VERSION} \ + --build-arg PHP_VERSION=${PHP_VERSION} \ + --tag benzine/php:${FLAVOUR}-${PHP_VERSION} \ + --target php-${FLAVOUR} \ + --file Dockerfile.Flavours \ + . -PHP_PACKAGES_73=mariadb-client \ - php7.3-apcu \ - php7.3-bcmath \ - php7.3-bz2 \ - php7.3-cli \ - php7.3-curl \ - php7.3-gd \ - php7.3-imap \ - php7.3-imagick \ - php7.3-intl \ - php7.3-json \ - php7.3-ldap \ - php7.3-mbstring \ - php7.3-memcache \ - php7.3-memcached \ - php7.3-mongodb \ - php7.3-mysql \ - php7.3-opcache \ - php7.3-pgsql \ - php7.3-pspell \ - php7.3-redis \ - php7.3-soap \ - php7.3-sqlite \ - php7.3-xdebug \ - php7.3-xml \ - php7.3-zip \ - postgresql-client - -PHP_PACKAGES_74=mariadb-client \ - php7.4-apcu \ - php7.4-bcmath \ - php7.4-bz2 \ - php7.4-cli \ - php7.4-curl \ - php7.4-gd \ - php7.4-imap \ - php7.4-imagick \ - php7.4-intl \ - php7.4-json \ - php7.4-ldap \ - php7.4-mbstring \ - php7.4-memcache \ - php7.4-memcached \ - php7.4-mongodb \ - php7.4-mysql \ - php7.4-opcache \ - php7.4-pgsql \ - php7.4-pspell \ - php7.4-redis \ - php7.4-soap \ - php7.4-sqlite \ - php7.4-xdebug \ - php7.4-xml \ - php7.4-zip \ - postgresql-client +bake-flavours: + $(MAKE) docker-php-flavour FLAVOUR=cli + $(MAKE) docker-php-flavour FLAVOUR=nginx + $(MAKE) docker-php-flavour FLAVOUR=apache -PHP_PACKAGES_80=mariadb-client \ - php8.0-apcu \ - php8.0-bcmath \ - php8.0-bz2 \ - php8.0-cli \ - php8.0-curl \ - php8.0-gd \ - php8.0-imap \ - php8.0-imagick \ - php8.0-intl \ - php8.0-ldap \ - php8.0-mbstring \ - php8.0-memcache \ - php8.0-memcached \ - php8.0-mysql \ - php8.0-opcache \ - php8.0-pgsql \ - php8.0-pspell \ - php8.0-redis \ - php8.0-soap \ - php8.0-sqlite \ - php8.0-xdebug \ - php8.0-xml \ - php8.0-zip \ - postgresql-client +bake: + $(MAKE) docker-marshall + $(MAKE) docker-php-core bake-flavours PHP_VERSION=7.3 + $(MAKE) docker-php-core bake-flavours PHP_VERSION=7.4 + $(MAKE) docker-php-core bake-flavours PHP_VERSION=8.0 -# ██████ ▓█████▄▄▄█████▓ █ ██ ██▓███ -# ▒██ ▒ ▓█ ▀▓ ██▒ ▓▒ ██ ▓██▒▓██░ ██▒ -# ░ ▓██▄ ▒███ ▒ ▓██░ ▒░▓██ ▒██░▓██░ ██▓▒ -# ▒ ██▒▒▓█ ▄░ ▓██▓ ░ ▓▓█ ░██░▒██▄█▓▒ ▒ -# ▒██████▒▒░▒████▒ ▒██▒ ░ ▒▒█████▓ ▒██▒ ░ ░ -# ▒ ▒▓▒ ▒ ░░░ ▒░ ░ ▒ ░░ ░▒▓▒ ▒ ▒ ▒▓▒░ ░ ░ -# ░ ░▒ ░ ░ ░ ░ ░ ░ ░░▒░ ░ ░ ░▒ ░ -# ░ ░ ░ ░ ░ ░░░ ░ ░ ░░ -# ░ ░ ░ ░ - -buildx: - export DOCKER_CLI_EXPERIMENTAL=enabled - -docker buildx create --name benzinebuilder - docker buildx use benzinebuilder - docker buildx inspect --bootstrap - -setup: buildx - git rev-parse --short HEAD > marshall/marshall_version - date +%Y-%m-%d\ %H:%M:%S > marshall/marshall_build_date - hostname > marshall/marshall_build_host - -# ███▄ ▄███▓ ▄▄▄ ██▀███ ██████ ██░ ██ ▄▄▄ ██▓ ██▓ -# ▓██▒▀█▀ ██▒▒████▄ ▓██ ▒ ██▒▒██ ▒ ▓██░ ██▒▒████▄ ▓██▒ ▓██▒ -# ▓██ ▓██░▒██ ▀█▄ ▓██ ░▄█ ▒░ ▓██▄ ▒██▀▀██░▒██ ▀█▄ ▒██░ ▒██░ -# ▒██ ▒██ ░██▄▄▄▄██ ▒██▀▀█▄ ▒ ██▒░▓█ ░██ ░██▄▄▄▄██ ▒██░ ▒██░ -# ▒██▒ ░██▒ ▓█ ▓██▒░██▓ ▒██▒▒██████▒▒░▓█▒░██▓ ▓█ ▓██▒░██████▒░██████▒ -# ░ ▒░ ░ ░ ▒▒ ▓▒█░░ ▒▓ ░▒▓░▒ ▒▓▒ ▒ ░ ▒ ░░▒░▒ ▒▒ ▓▒█░░ ▒░▓ ░░ ▒░▓ ░ -# ░ ░ ░ ▒ ▒▒ ░ ░▒ ░ ▒░░ ░▒ ░ ░ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░ ▒ ░░ ░ ▒ ░ -# ░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ -benzine/marshall: setup - $(CMD_BUILD) -t benzine/marshall:latest --target=marshall . $(BUILDX_OUTPUT) - -# ██▓███ ██░ ██ ██▓███ ▄████▄ ▒█████ ██▀███ ▓█████ -# ▓██░ ██▒▓██░ ██▒▓██░ ██▒ ▒██▀ ▀█ ▒██▒ ██▒▓██ ▒ ██▒▓█ ▀ -# ▓██░ ██▓▒▒██▀▀██░▓██░ ██▓▒ ▒▓█ ▄ ▒██░ ██▒▓██ ░▄█ ▒▒███ -# ▒██▄█▓▒ ▒░▓█ ░██ ▒██▄█▓▒ ▒ ▒▓▓▄ ▄██▒▒██ ██░▒██▀▀█▄ ▒▓█ ▄ -# ▒██▒ ░ ░░▓█▒░██▓▒██▒ ░ ░ ▒ ▓███▀ ░░ ████▓▒░░██▓ ▒██▒░▒████▒ -# ▒▓▒░ ░ ░ ▒ ░░▒░▒▒▓▒░ ░ ░ ░ ░▒ ▒ ░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░░░ ▒░ ░ -# ░▒ ░ ▒ ░▒░ ░░▒ ░ ░ ▒ ░ ▒ ▒░ ░▒ ░ ▒░ ░ ░ ░ -# ░░ ░ ░░ ░░░ ░ ░ ░ ░ ▒ ░░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ - -benzine/php\:core-7.0: setup - $(CMD_BUILD) -t benzine/php:core-7.0 --target=php-core --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:core-7.1: setup - $(CMD_BUILD) -t benzine/php:core-7.1 --target=php-core --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:core-7.2: setup - $(CMD_BUILD) -t benzine/php:core-7.2 --target=php-core --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:core-7.3: setup - $(CMD_BUILD) -t benzine/php:core-7.3 --target=php-core --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:core-7.4: setup - $(CMD_BUILD) -t benzine/php:core-7.4 --target=php-core --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:core-8.0: setup - $(CMD_BUILD) -t benzine/php:core-7.4 --target=php-core --build-arg "PHP_VERSION=8.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_80)" . $(BUILDX_OUTPUT) - -core: - $(MAKE) benzine/php\:core-7.0 - $(MAKE) benzine/php\:core-7.1 - $(MAKE) benzine/php\:core-7.2 - $(MAKE) benzine/php\:core-7.3 - $(MAKE) benzine/php\:core-7.4 - -# ██▓███ ██░ ██ ██▓███ ▄████▄ ██▓ ██▓ -# ▓██░ ██▒▓██░ ██▒▓██░ ██▒ ▒██▀ ▀█ ▓██▒ ▓██▒ -# ▓██░ ██▓▒▒██▀▀██░▓██░ ██▓▒ ▒▓█ ▄ ▒██░ ▒██▒ -# ▒██▄█▓▒ ▒░▓█ ░██ ▒██▄█▓▒ ▒ ▒▓▓▄ ▄██▒▒██░ ░██░ -# ▒██▒ ░ ░░▓█▒░██▓▒██▒ ░ ░ ▒ ▓███▀ ░░██████▒░██░ -# ▒▓▒░ ░ ░ ▒ ░░▒░▒▒▓▒░ ░ ░ ░ ░▒ ▒ ░░ ▒░▓ ░░▓ -# ░▒ ░ ▒ ░▒░ ░░▒ ░ ░ ▒ ░ ░ ▒ ░ ▒ ░ -# ░░ ░ ░░ ░░░ ░ ░ ░ ▒ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ - -benzine/php\:cli-7.0: setup - $(CMD_BUILD) -t benzine/php:cli-7.0 --target=php-cli --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-7.0-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.1: setup - $(CMD_BUILD) -t benzine/php:cli-7.1 --target=php-cli --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.1-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-7.1-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.2: setup - $(CMD_BUILD) -t benzine/php:cli-7.2 --target=php-cli --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.2-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-7.2-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.3: setup - $(CMD_BUILD) -t benzine/php:cli-7.3 --target=php-cli --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.3-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-7.3-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.4: setup - $(CMD_BUILD) -t benzine/php:cli-7.4 --target=php-cli --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:cli-7.4-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-7.4-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:cli-8.0: setup - $(CMD_BUILD) -t benzine/php:cli-8.0 --target=php-cli --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_80)" . $(BUILDX_OUTPUT) -benzine/php\:cli-8.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-8.0-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_80)" . $(BUILDX_OUTPUT) - -php-cli: - $(MAKE) benzine/php\:cli-7.0 - $(MAKE) benzine/php\:cli-7.0-onbuild - $(MAKE) benzine/php\:cli-7.1 - $(MAKE) benzine/php\:cli-7.1-onbuild - $(MAKE) benzine/php\:cli-7.2 - $(MAKE) benzine/php\:cli-7.2-onbuild - $(MAKE) benzine/php\:cli-7.3 - $(MAKE) benzine/php\:cli-7.3-onbuild - $(MAKE) benzine/php\:cli-7.4 - $(MAKE) benzine/php\:cli-7.4-onbuild - $(MAKE) benzine/php\:cli-8.0 - $(MAKE) benzine/php\:cli-8.0-onbuild - -# ██▓███ ██░ ██ ██▓███ ███▄ █ ▄████ ██▓ ███▄ █ ▒██ ██▒ -# ▓██░ ██▒▓██░ ██▒▓██░ ██▒ ██ ▀█ █ ██▒ ▀█▒▓██▒ ██ ▀█ █ ▒▒ █ █ ▒░ -# ▓██░ ██▓▒▒██▀▀██░▓██░ ██▓▒ ▓██ ▀█ ██▒▒██░▄▄▄░▒██▒▓██ ▀█ ██▒░░ █ ░ -# ▒██▄█▓▒ ▒░▓█ ░██ ▒██▄█▓▒ ▒ ▓██▒ ▐▌██▒░▓█ ██▓░██░▓██▒ ▐▌██▒ ░ █ █ ▒ -# ▒██▒ ░ ░░▓█▒░██▓▒██▒ ░ ░ ▒██░ ▓██░░▒▓███▀▒░██░▒██░ ▓██░▒██▒ ▒██▒ -# ▒▓▒░ ░ ░ ▒ ░░▒░▒▒▓▒░ ░ ░ ░ ▒░ ▒ ▒ ░▒ ▒ ░▓ ░ ▒░ ▒ ▒ ▒▒ ░ ░▓ ░ -# ░▒ ░ ▒ ░▒░ ░░▒ ░ ░ ░░ ░ ▒░ ░ ░ ▒ ░░ ░░ ░ ▒░░░ ░▒ ░ -# ░░ ░ ░░ ░░░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ - -benzine/php\:nginx-7.0: setup - $(CMD_BUILD) -t benzine/php:nginx-7.0 --target=php-nginx --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-7.0-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.1: setup - $(CMD_BUILD) -t benzine/php:nginx-7.1 --target=php-nginx --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.1-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-7.1-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.2: setup - $(CMD_BUILD) -t benzine/php:nginx-7.2 --target=php-nginx --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.2-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-7.2-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.3: setup - $(CMD_BUILD) -t benzine/php:nginx-7.3 --target=php-nginx --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.3-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-7.3-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.4: setup - $(CMD_BUILD) -t benzine/php:nginx-7.4 --target=php-nginx --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-7.4-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-7.4-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-8.0: setup - $(CMD_BUILD) -t benzine/php:nginx-8.0 --target=php-nginx --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_80)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-8.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-8.0-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_80)" . $(BUILDX_OUTPUT) - -php-nginx: - $(MAKE) benzine/php\:nginx-7.0 - $(MAKE) benzine/php\:nginx-7.0-onbuild - $(MAKE) benzine/php\:nginx-7.1 - $(MAKE) benzine/php\:nginx-7.1-onbuild - $(MAKE) benzine/php\:nginx-7.2 - $(MAKE) benzine/php\:nginx-7.2-onbuild - $(MAKE) benzine/php\:nginx-7.3 - $(MAKE) benzine/php\:nginx-7.3-onbuild - $(MAKE) benzine/php\:nginx-7.4 - $(MAKE) benzine/php\:nginx-7.4-onbuild - $(MAKE) benzine/php\:nginx-8.0 - $(MAKE) benzine/php\:nginx-8.0-onbuild - -# ██▓███ ██░ ██ ██▓███ ▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ -# ▓██░ ██▒▓██░ ██▒▓██░ ██▒ ▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ -# ▓██░ ██▓▒▒██▀▀██░▓██░ ██▓▒ ▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ -# ▒██▄█▓▒ ▒░▓█ ░██ ▒██▄█▓▒ ▒ ░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ -# ▒██▒ ░ ░░▓█▒░██▓▒██▒ ░ ░ ▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ -# ▒▓▒░ ░ ░ ▒ ░░▒░▒▒▓▒░ ░ ░ ▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ -# ░▒ ░ ▒ ░▒░ ░░▒ ░ ▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ -# ░░ ░ ░░ ░░░ ░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ - -benzine/php\:apache-7.0: setup - $(CMD_BUILD) -t benzine/php:apache-7.0 --target=php-apache --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-7.0-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_70)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.1: setup - $(CMD_BUILD) -t benzine/php:apache-7.1 --target=php-apache --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.1-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-7.1-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.1" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_71)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.2: setup - $(CMD_BUILD) -t benzine/php:apache-7.2 --target=php-apache --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.2-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-7.2-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.2" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_72)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.3: setup - $(CMD_BUILD) -t benzine/php:apache-7.3 --target=php-apache --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.3-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-7.3-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.4: setup - $(CMD_BUILD) -t benzine/php:apache-7.4 --target=php-apache --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:apache-7.4-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-7.4-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.4" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:apache-8.0: setup - $(CMD_BUILD) -t benzine/php:apache-8.0 --target=php-apache --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) -benzine/php\:apache-8.0-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-8.0-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=8.0" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_74)" . $(BUILDX_OUTPUT) - -php-apache: - $(MAKE) benzine/php\:apache-7.0 - $(MAKE) benzine/php\:apache-7.0-onbuild - $(MAKE) benzine/php\:apache-7.1 - $(MAKE) benzine/php\:apache-7.1-onbuild - $(MAKE) benzine/php\:apache-7.2 - $(MAKE) benzine/php\:apache-7.2-onbuild - $(MAKE) benzine/php\:apache-7.3 - $(MAKE) benzine/php\:apache-7.3-onbuild - $(MAKE) benzine/php\:apache-7.4 - $(MAKE) benzine/php\:apache-7.4-onbuild - $(MAKE) benzine/php\:apache-8.0 - $(MAKE) benzine/php\:apache-8.0-onbuild - -# ███▄ █ ▒█████ ▓█████▄ ▓█████ ▄▄▄██▀▀▀██████ -# ██ ▀█ █ ▒██▒ ██▒▒██▀ ██▌▓█ ▀ ▒██ ▒██ ▒ -#▓██ ▀█ ██▒▒██░ ██▒░██ █▌▒███ ░██ ░ ▓██▄ -#▓██▒ ▐▌██▒▒██ ██░░▓█▄ ▌▒▓█ ▄ ▓██▄██▓ ▒ ██▒ -#▒██░ ▓██░░ ████▓▒░░▒████▓ ░▒████▒ ▓███▒ ▒██████▒▒ -#░ ▒░ ▒ ▒ ░ ▒░▒░▒░ ▒▒▓ ▒ ░░ ▒░ ░ ▒▓▒▒░ ▒ ▒▓▒ ▒ ░ -#░ ░░ ░ ▒░ ░ ▒ ▒░ ░ ▒ ▒ ░ ░ ░ ▒ ░▒░ ░ ░▒ ░ ░ -# ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ - -benzine/node\:8: setup - $(CMD_BUILD) -t benzine/node:8 --target=nodejs --build-arg NODE_VERSION=8.16.0 --build-arg YARN_VERSION=1.15.2 . $(BUILDX_OUTPUT) -benzine/node\:8-onbuild: setup - $(CMD_BUILD) -t benzine/node:8-onbuild --target=nodejs-onbuild --build-arg NODE_VERSION=8.16.0 --build-arg YARN_VERSION=1.15.2 . $(BUILDX_OUTPUT) -benzine/node\:8-compiler: setup - $(CMD_BUILD) -t benzine/node:8-compiler --target=nodejs-compiler --build-arg NODE_VERSION=8.16.0 --build-arg YARN_VERSION=1.15.2 . $(BUILDX_OUTPUT) -benzine/node\:8-compiler-onbuild: setup - $(CMD_BUILD) -t benzine/node:8-compiler-onbuild --target=nodejs-compiler-onbuild --build-arg NODE_VERSION=8.16.0 --build-arg YARN_VERSION=1.15.2 . $(BUILDX_OUTPUT) - -benzine/node\:10: setup - $(CMD_BUILD) -t benzine/node:10 --target=nodejs --build-arg NODE_VERSION=10.16.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:10-onbuild: setup - $(CMD_BUILD) -t benzine/node:10-onbuild --target=nodejs-onbuild --build-arg NODE_VERSION=10.16.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:10-compiler: setup - $(CMD_BUILD) -t benzine/node:10-compiler --target=nodejs-compiler --build-arg NODE_VERSION=10.16.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:10-compiler-onbuild: setup - $(CMD_BUILD) -t benzine/node:10-compiler-onbuild --target=nodejs-compiler-onbuild --build-arg NODE_VERSION=10.16.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) - -benzine/node\:11: setup - $(CMD_BUILD) -t benzine/node:11 --target=nodejs --build-arg NODE_VERSION=11.15.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:11-onbuild: setup - $(CMD_BUILD) -t benzine/node:11-onbuild --target=nodejs-onbuild --build-arg NODE_VERSION=11.15.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:11-compiler: setup - $(CMD_BUILD) -t benzine/node:11-compiler --target=nodejs-compiler --build-arg NODE_VERSION=11.15.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:11-compiler-onbuild: setup - $(CMD_BUILD) -t benzine/node:11-compiler-onbuild --target=nodejs-compiler-onbuild --build-arg NODE_VERSION=11.15.0 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) - -benzine/node\:12: setup - $(CMD_BUILD) -t benzine/node:12 --target=nodejs --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:12-onbuild: setup - $(CMD_BUILD) -t benzine/node:12-onbuild --target=nodejs-onbuild --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:12-compiler: setup - $(CMD_BUILD) -t benzine/node:12-compiler --target=nodejs-compiler --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:12-compiler-onbuild: setup - $(CMD_BUILD) -t benzine/node:12-compiler-onbuild --target=nodejs-compiler-onbuild --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) - -node: - $(MAKE) benzine/node\:8 - $(MAKE) benzine/node\:8-onbuild - $(MAKE) benzine/node\:8-compiler - $(MAKE) benzine/node\:8-compiler-onbuild - $(MAKE) benzine/node\:10 - $(MAKE) benzine/node\:10-onbuild - $(MAKE) benzine/node\:10-compiler - $(MAKE) benzine/node\:10-compiler-onbuild - $(MAKE) benzine/node\:11 - $(MAKE) benzine/node\:11-onbuild - $(MAKE) benzine/node\:11-compiler - $(MAKE) benzine/node\:11-compiler-onbuild - $(MAKE) benzine/node\:12 - $(MAKE) benzine/node\:12-onbuild - $(MAKE) benzine/node\:12-compiler - $(MAKE) benzine/node\:12-compiler-onbuild - -# ██▓ ▄▄▄ ▄▄▄█████▓▓█████ ██████ ▄▄▄█████▓ ▄▄▄▄ █ ██ ██▓ ██▓ ▓█████▄ ██████ -# ▓██▒ ▒████▄ ▓ ██▒ ▓▒▓█ ▀ ▒██ ▒ ▓ ██▒ ▓▒ ▓█████▄ ██ ▓██▒▓██▒▓██▒ ▒██▀ ██▌▒██ ▒ -# ▒██░ ▒██ ▀█▄ ▒ ▓██░ ▒░▒███ ░ ▓██▄ ▒ ▓██░ ▒░ ▒██▒ ▄██▓██ ▒██░▒██▒▒██░ ░██ █▌░ ▓██▄ -# ▒██░ ░██▄▄▄▄██░ ▓██▓ ░ ▒▓█ ▄ ▒ ██▒░ ▓██▓ ░ ▒██░█▀ ▓▓█ ░██░░██░▒██░ ░▓█▄ ▌ ▒ ██▒ -# ░██████▒▓█ ▓██▒ ▒██▒ ░ ░▒████▒▒██████▒▒ ▒██▒ ░ ░▓█ ▀█▓▒▒█████▓ ░██░░██████▒░▒████▓ ▒██████▒▒ -# ░ ▒░▓ ░▒▒ ▓▒█░ ▒ ░░ ░░ ▒░ ░▒ ▒▓▒ ▒ ░ ▒ ░░ ░▒▓███▀▒░▒▓▒ ▒ ▒ ░▓ ░ ▒░▓ ░ ▒▒▓ ▒ ▒ ▒▓▒ ▒ ░ -# ░ ░ ▒ ░ ▒ ▒▒ ░ ░ ░ ░ ░░ ░▒ ░ ░ ░ ▒░▒ ░ ░░▒░ ░ ░ ▒ ░░ ░ ▒ ░ ░ ▒ ▒ ░ ░▒ ░ ░ -# ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░░░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ - -benzine/php\:cli: setup - $(CMD_BUILD) -t benzine/php:cli --target=php-cli --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:cli-onbuild: setup - $(CMD_BUILD) -t benzine/php:cli-onbuild --target=php-cli-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:apache: setup - $(CMD_BUILD) -t benzine/php:apache --target=php-apache --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:apache-onbuild: setup - $(CMD_BUILD) -t benzine/php:apache-onbuild --target=php-apache-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:nginx: setup - $(CMD_BUILD) -t benzine/php:nginx --target=php-nginx --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/php\:nginx-onbuild: setup - $(CMD_BUILD) -t benzine/php:nginx-onbuild --target=php-nginx-onbuild --build-arg "PHP_VERSION=7.3" --build-arg "PHP_PACKAGES=$(PHP_PACKAGES_73)" . $(BUILDX_OUTPUT) -benzine/node: setup - $(CMD_BUILD) -t benzine/node --target=nodejs --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) -benzine/node\:onbuild: setup - $(CMD_BUILD) -t benzine/node-onbuild --target=nodejs-onbuild --build-arg NODE_VERSION=12.3.1 --build-arg YARN_VERSION=1.16.0 . $(BUILDX_OUTPUT) - -latest: - $(MAKE) benzine/php\:cli - $(MAKE) benzine/php\:cli-onbuild - $(MAKE) benzine/php\:apache - $(MAKE) benzine/php\:apache-onbuild - $(MAKE) benzine/php\:nginx - $(MAKE) benzine/php\:nginx-onbuild - $(MAKE) benzine/node - $(MAKE) benzine/node:onbuild - -all: - $(MAKE) benzine/marshall - #$(MAKE) php-core # Nobody actually uses the core as-is, everything is baked off of cli & nginx honestly. - $(MAKE) php-cli - $(MAKE) php-nginx - $(MAKE) php-apache - $(MAKE) latest - -# ▓█████▄ ▒█████ ▄████▄ ██████ -# ▒██▀ ██▌▒██▒ ██▒▒██▀ ▀█ ▒██ ▒ -# ░██ █▌▒██░ ██▒▒▓█ ▄ ░ ▓██▄ -# ░▓█▄ ▌▒██ ██░▒▓▓▄ ▄██▒ ▒ ██▒ -# ░▒████▓ ░ ████▓▒░▒ ▓███▀ ░▒██████▒▒ -# ▒▒▓ ▒ ░ ▒░▒░▒░ ░ ░▒ ▒ ░▒ ▒▓▒ ▒ ░ -# ░ ▒ ▒ ░ ▒ ▒░ ░ ▒ ░ ░▒ ░ ░ -# ░▄████ ▓█████▒ ███▄ █ ▓█████░ ██▀███ ▄▄▄ ▄▄▄█████▓ ▒█████ ██▀███ -# ██▒ ▀█▒▓█ ▀░ ██ ▀█ █ ▓█ ▀░▓██ ▒ ██▒▒████▄ ▓ ██▒ ▓▒▒██▒ ██▒▓██ ▒ ██▒ -# ▒██░▄▄▄░▒███ ▓██ ▀█ ██▒▒███ ▓██ ░▄█ ▒▒██ ▀█▄ ▒ ▓██░ ▒░▒██░ ██▒▓██ ░▄█ ▒ -# ░▓█ ██▓▒▓█ ▄ ▓██▒ ▐▌██▒▒▓█ ▄ ▒██▀▀█▄ ░██▄▄▄▄██░ ▓██▓ ░ ▒██ ██░▒██▀▀█▄ -# ░▒▓███▀▒░▒████▒▒██░ ▓██░░▒████▒░██▓ ▒██▒ ▓█ ▓██▒ ▒██▒ ░ ░ ████▓▒░░██▓ ▒██▒ -# ░▒ ▒ ░░ ▒░ ░░ ▒░ ▒ ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ▒ ░░ ░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ -# ░ ░ ░ ░ ░░ ░░ ░ ▒░ ░ ░ ░ ░▒ ░ ▒░ ▒ ▒▒ ░ ░ ░ ▒ ▒░ ░▒ ░ ▒░ -# ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ ▒ ░░ ░ -.PHONY: docs -docs: - composer install -d doc/ --ignore-platform-reqs - ./doc/gen - -gen-transmute: - cat .github/workflows/build-x86_64-php.yml | sed 's|x86_64|arm64v8|g' > .github/workflows/build-arm64v8-php.yml \ No newline at end of file +all: bake \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f40a9e2..ce519ba 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,20 +1,113 @@ -version: "2.3" +version: "3.4" services: - test-nginx-7.3: + marshall: + image: benzine/marshall:latest + build: + target: marshall + dockerfile: Dockerfile.Marshall + context: . + + php-core-7.3: + image: benzine/php:core-7.3 + build: + target: php-core + dockerfile: Dockerfile.Core + context: . + args: + PHP_VERSION: 7.3 + PHP_PACKAGES: git mariadb-client php7.3-apcu php7.3-bcmath php7.3-bz2 php7.3-cli php7.3-curl php7.3-gd php7.3-imap php7.3-imagick php7.3-intl php7.3-ldap php7.3-mbstring php7.3-memcache php7.3-mysql php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-redis php7.3-soap php7.3-sqlite php7.3-xdebug php7.3-xml php7.3-zip postgresql-client + php-core-7.4: + image: benzine/php:core-7.4 + build: + target: php-core + dockerfile: Dockerfile.Core + context: . + args: + PHP_VERSION: 7.4 + PHP_PACKAGES: git mariadb-client php7.4-apcu php7.4-bcmath php7.4-bz2 php7.4-cli php7.4-curl php7.4-gd php7.4-imap php7.4-imagick php7.4-intl php7.4-ldap php7.4-mbstring php7.4-memcache php7.4-mysql php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-redis php7.4-soap php7.4-sqlite php7.4-xdebug php7.4-xml php7.4-zip postgresql-client + php-core-8.0: + image: benzine/php:core-8.0 + build: + target: php-core + dockerfile: Dockerfile.Core + context: . + args: + PHP_VERSION: 8.0 + PHP_PACKAGES: git mariadb-client php8.0-apcu php8.0-bcmath php8.0-bz2 php8.0-cli php8.0-curl php8.0-gd php8.0-imap php8.0-imagick php8.0-intl php8.0-ldap php8.0-mbstring php8.0-memcache php8.0-mysql php8.0-opcache php8.0-pgsql php8.0-phpdbg php8.0-pspell php8.0-redis php8.0-soap php8.0-sqlite php8.0-xdebug php8.0-xml php8.0-zip postgresql-client + + php-cli-7.3: + image: benzine/php:cli-7.3 + build: + target: php-cli + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.3 + php-cli-7.4: + image: benzine/php:cli-7.4 + build: + target: php-cli + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.4 + php-cli-8.0: + image: benzine/php:cli-8.0 + build: + target: php-cli + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-8.0 + + php-nginx-7.3: image: benzine/php:nginx-7.3 - volumes: - - ./test-webapp/php:/app/public - ports: - - 127.0.0.73:80:80 - - 127.0.0.73:443:443 - test-nginx-7.4: + build: + target: php-nginx + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.3 + php-nginx-7.4: image: benzine/php:nginx-7.4 - volumes: - - ./test-webapp/php:/app/public - ports: - - 127.0.0.74:80:80 - - 127.0.0.74:443:443 - environment: - DEBUG_MODE: "on" - XDEBUG_CONFIG: "client_host=172.17.0.1 log=/tmp/xdebug.log" \ No newline at end of file + build: + target: php-nginx + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.4 + php-nginx-8.0: + image: benzine/php:nginx-8.0 + build: + target: php-nginx + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-8.0 + + php-apache-7.3: + image: benzine/php:apache-7.3 + build: + target: php-apache + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.3 + php-apache-7.4: + image: benzine/php:apache-7.4 + build: + target: php-apache + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-7.4 + php-apache-8.0: + image: benzine/php:apache-8.0 + build: + target: php-apache + dockerfile: Dockerfile.Flavours + context: . + args: + PHP_CORE_VERSION: benzine/php:core-8.0 + \ No newline at end of file diff --git a/marshall/installers/000_apt.sh b/marshall/installers/000_apt.sh old mode 100644 new mode 100755 index c4d9a18..249a480 --- a/marshall/installers/000_apt.sh +++ b/marshall/installers/000_apt.sh @@ -2,12 +2,18 @@ source /installers/config echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/force-unsafe-io -# We're gonna move the sources to .d/ubuntu-upstream.list, then copy it, then manipulate it for a mirror list. -mv /etc/apt/sources.list /etc/apt/sources.list.d/ubuntu-upstream.list -cp /etc/apt/sources.list.d/ubuntu-upstream.list /etc/apt/sources.list.d/ubuntu-mirrors.list -touch /etc/apt/sources.list -sed -i 's/http\:\/\/archive\.ubuntu\.com\/ubuntu\//mirror\:\/\/mirrors.ubuntu.com\/mirrors.txt/g' /etc/apt/sources.list.d/ubuntu-mirrors.list -sed -i "s|deb http://security.ubuntu.com|# deb http://security.ubuntu.com|g" /etc/apt/sources.list.d/ubuntu-mirrors.list +# We're gonna move the sources to .d/ubuntu.list, then copy it, then manipulate it for a mirror list. +( + cat /etc/apt/sources.list; + cat /etc/apt/sources.list \ + | sed 's/http\:\/\/archive\.ubuntu\.com\/ubuntu\//mirror\:\/\/mirrors.ubuntu.com\/mirrors.txt/g' \ + | sed "s|deb http://security.ubuntu.com|# deb http://security.ubuntu.com|g" +) \ + | sed '/^#/d' \ + | sed '/^$/d' \ + | uniq \ + > /etc/apt/sources.list.d/ubuntu.list +rm /etc/apt/sources.list; touch /etc/apt/sources.list; # Update apt repos apt-get -qq update diff --git a/marshall/installers/001_bash.sh b/marshall/installers/001_bash.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/002_timezone.sh b/marshall/installers/002_timezone.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/003_dos2unix.sh b/marshall/installers/003_dos2unix.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/050_runit.sh b/marshall/installers/050_runit.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/100_cron.sh b/marshall/installers/100_cron.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/101_rsyslog.sh b/marshall/installers/101_rsyslog.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/102_logrotate.sh b/marshall/installers/102_logrotate.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/900_utils.sh b/marshall/installers/900_utils.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/901_package_report.sh b/marshall/installers/901_package_report.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/999_cleanup.sh b/marshall/installers/999_cleanup.sh old mode 100644 new mode 100755 diff --git a/marshall/installers/install b/marshall/installers/install old mode 100644 new mode 100755 index 6efdbe3..d893445 --- a/marshall/installers/install +++ b/marshall/installers/install @@ -1,9 +1,7 @@ #!/bin/bash - set -e +cd "$(dirname "$0")" -for file in /installers/*.sh -do - +for file in *.sh; do /bin/bash $file done \ No newline at end of file