From 4b8ff5fcc9af07b76b57bf7fdb5f2db52e33a135 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Sat, 16 Nov 2024 20:43:41 +0100 Subject: [PATCH] add php 8.4 rc --- .github/workflows/build.yml | 30 +++-- .../{integration-tests.yml => tests.yml} | 0 Makefile | 21 +++ src/docker/8.1/Dockerfile | 125 ----------------- src/docker/8.3/Dockerfile | 127 ------------------ src/docker/8.4/Dockerfile | 127 ------------------ src/docker/{8.2 => }/Dockerfile | 24 ++-- 7 files changed, 54 insertions(+), 400 deletions(-) rename .github/workflows/{integration-tests.yml => tests.yml} (100%) create mode 100644 Makefile delete mode 100644 src/docker/8.1/Dockerfile delete mode 100644 src/docker/8.3/Dockerfile delete mode 100644 src/docker/8.4/Dockerfile rename src/docker/{8.2 => }/Dockerfile (86%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9afdfaf..cf1b57a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,9 +3,6 @@ on: push: branches: - main - -env: - BUILDKIT_IMAGE: jkaninda/nginx-php-fpm jobs: docker: runs-on: ubuntu-latest @@ -26,25 +23,42 @@ jobs: name: Build and push 8.1 uses: docker/build-push-action@v3 with: - file: "./src/docker/8.1/Dockerfile" + file: "./src/docker/Dockerfile" push: true platforms: linux/amd64,linux/arm64 - tags: "${{env.BUILDKIT_IMAGE}}:8.1" + build-args: | + phpVersion=8.1 + tags: "${{ env.BUILDKIT_IMAGE }}:8.1" - name: Build and push 8.2 uses: docker/build-push-action@v3 with: - file: "./src/docker/8.2/Dockerfile" + file: "./src/docker/Dockerfile" push: true platforms: linux/amd64,linux/arm64 + build-args: | + phpVersion=8.2 tags: "${{env.BUILDKIT_IMAGE}}:8.2" - name: Build and push 8.3 uses: docker/build-push-action@v3 with: - file: "./src/docker/8.3/Dockerfile" + file: "./src/docker/Dockerfile" push: true platforms: linux/amd64,linux/arm64 + build-args: | + phpVersion=8.3 tags: | "${{env.BUILDKIT_IMAGE}}:8.3" - "${{env.BUILDKIT_IMAGE}}:latest" \ No newline at end of file + "${{env.BUILDKIT_IMAGE}}:latest" + - + name: Build and push 8.4 RC + uses: docker/build-push-action@v3 + with: + file: "./src/docker/Dockerfile" + push: true + platforms: linux/amd64,linux/arm64 + build-args: | + phpVersion=8.4.0RC4 + tags: | + "${{env.BUILDKIT_IMAGE}}:8.4.0RC4" diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/tests.yml similarity index 100% rename from .github/workflows/integration-tests.yml rename to .github/workflows/tests.yml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dc90f0a --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +IMAGE_NAME?=jkaninda/nginx-php-fpm +.PHONY: all +all: build +##@ Build +.PHONY: build +build: build-81 build-82 build-83 build-84 +.PHONY: build-80 +build-80: + docker build --build-arg phpVersion=8.0 -f src/docker/8.0/Dockerfile -t ${IMAGE_NAME}:8.0 . +.PHONY: build-81 +build-81: + docker build --build-arg phpVersion=8.1 -f src/docker/Dockerfile -t ${IMAGE_NAME}:8.1 . +.PHONY: build-82 +build-82: + docker build --build-arg phpVersion=8.2 -f src/docker/Dockerfile -t ${IMAGE_NAME}:8.2 . +.PHONY: build-83 +build-83: + docker build --build-arg phpVersion=8.3 -f src/docker/Dockerfile -t ${IMAGE_NAME}:8.3 . +.PHONY: build-84 +build-84: + docker build --build-arg phpVersion=8.4.0RC4 -f src/docker/Dockerfile -t ${IMAGE_NAME}:8.4 . diff --git a/src/docker/8.1/Dockerfile b/src/docker/8.1/Dockerfile deleted file mode 100644 index dae6308..0000000 --- a/src/docker/8.1/Dockerfile +++ /dev/null @@ -1,125 +0,0 @@ -FROM php:8.1-fpm -ARG WORKDIR=/var/www/html -ENV DOCUMENT_ROOT=${WORKDIR} -ENV LARAVEL_PROCS_NUMBER=1 -ENV DOMAIN=_ -ENV CLIENT_MAX_BODY_SIZE=15M -ENV NODE_VERSION=17.x -ARG GROUP_ID=1000 -ARG USER_ID=1000 -ENV USER_NAME=www-data -ARG GROUP_NAME=www-data -# Install system dependencies -RUN apt-get update && apt-get install -y \ - git \ - curl \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmemcached-dev \ - libzip-dev \ - libpng-dev \ - libonig-dev \ - libxml2-dev \ - librdkafka-dev \ - libpq-dev \ - openssh-server \ - zip \ - unzip \ - supervisor \ - sqlite3 \ - nano \ - cron - -RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - - # Install Node -RUN apt-get install -y nodejs -# Install nginx -RUN apt-get update && apt-get install -y nginx - -# Clear cache -RUN apt-get clean && rm -rf /var/lib/apt/lists/* -# Install Kafka -RUN git clone https://github.com/arnaud-lb/php-rdkafka.git\ - && cd php-rdkafka \ - && phpize \ - && ./configure \ - && make all -j 5 \ - && make install - -# Install Rdkafka and enable it -RUN docker-php-ext-enable rdkafka \ - && cd .. \ - && rm -rf /php-rdkafka - -# Install PHP extensions zip, mbstring, exif, bcmath, intl -RUN docker-php-ext-configure gd --with-freetype --with-jpeg -RUN docker-php-ext-install zip mbstring exif pcntl bcmath -j$(nproc) gd intl - -# Install Redis and enable it -RUN pecl install redis && docker-php-ext-enable redis - - - -# Install the php memcached extension -RUN pecl install memcached && docker-php-ext-enable memcached - -# Install the PHP pdo_mysql extention -RUN docker-php-ext-install pdo_mysql - -# Install the PHP pdo_pgsql extention -RUN docker-php-ext-install pdo_pgsql - -# Install PHP Opcache extention -RUN docker-php-ext-install opcache - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -# Set working directory -WORKDIR $WORKDIR - -RUN rm -Rf /var/www/* && \ -mkdir -p /var/www/html - -ADD src/index.php $WORKDIR/index.php -ADD src/php.ini $PHP_INI_DIR/conf.d/ -ADD src/opcache.ini $PHP_INI_DIR/conf.d/ -ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf - -COPY src/entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/entrypoint.sh -RUN ln -s /usr/local/bin/entrypoint.sh / - -RUN rm -rf /etc/nginx/conf.d/default.conf -RUN rm -rf /etc/nginx/sites-enabled/default -RUN rm -rf /etc/nginx/sites-available/default - -RUN rm -rf /etc/nginx/nginx.conf - -COPY src/nginx.conf /etc/nginx/nginx.conf -COPY src/default.conf /etc/nginx/conf.d/ - -RUN usermod -u ${USER_ID} ${USER_NAME} -RUN groupmod -g ${USER_ID} ${GROUP_NAME} - -RUN mkdir -p /var/log/supervisor -RUN mkdir -p /var/log/nginx -RUN mkdir -p /var/cache/nginx - -RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ - chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - touch /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ - chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ - chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/nginx.conf && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /tmp - - -#USER ${USER_NAME} -EXPOSE 80 -ENTRYPOINT ["entrypoint.sh"] diff --git a/src/docker/8.3/Dockerfile b/src/docker/8.3/Dockerfile deleted file mode 100644 index 5c52d16..0000000 --- a/src/docker/8.3/Dockerfile +++ /dev/null @@ -1,127 +0,0 @@ -FROM php:8.3.4-fpm -ARG WORKDIR=/var/www/html -ENV DOCUMENT_ROOT=${WORKDIR} -ENV LARAVEL_PROCS_NUMBER=1 -ENV DOMAIN=_ -ENV CLIENT_MAX_BODY_SIZE=15M -ENV NODE_VERSION=20.x -ARG GROUP_ID=1000 -ARG USER_ID=1000 -ENV USER_NAME=www-data -ARG GROUP_NAME=www-data -# Install system dependencies -RUN apt-get update && apt-get install -y \ - git \ - curl \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmemcached-dev \ - libzip-dev \ - libpng-dev \ - libonig-dev \ - libxml2-dev \ - librdkafka-dev \ - libpq-dev \ - openssh-server \ - zip \ - unzip \ - supervisor \ - sqlite3 \ - nano \ - cron - -RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - - # Install Node -RUN apt-get install -y nodejs -# Install nginx -RUN apt-get update && apt-get install -y nginx - -# Clear cache -RUN apt-get clean && rm -rf /var/lib/apt/lists/* -# Install Kafka -RUN git clone https://github.com/arnaud-lb/php-rdkafka.git\ - && cd php-rdkafka \ - && phpize \ - && ./configure \ - && make all -j 5 \ - && make install - -# Install Rdkafka and enable it -RUN docker-php-ext-enable rdkafka \ - && cd .. \ - && rm -rf /php-rdkafka - -# Install PHP extensions zip, mbstring, exif, bcmath, intl -RUN docker-php-ext-configure gd --with-freetype --with-jpeg -RUN docker-php-ext-install zip mbstring exif pcntl bcmath -j$(nproc) gd intl - -# Install Redis and enable it -RUN pecl install redis && docker-php-ext-enable redis - - - -# Install the php memcached extension -RUN pecl install memcached && docker-php-ext-enable memcached - -# Install the PHP pdo_mysql extention -RUN docker-php-ext-install pdo_mysql - -# Install the PHP pdo_pgsql extention -RUN docker-php-ext-install pdo_pgsql - -# Install PHP Opcache extention -RUN docker-php-ext-install opcache - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -# Set working directory -WORKDIR $WORKDIR - -RUN rm -Rf /var/www/* && \ -mkdir -p /var/www/html - -ADD src/index.php $WORKDIR/index.php -ADD src/php.ini $PHP_INI_DIR/conf.d/ -ADD src/opcache.ini $PHP_INI_DIR/conf.d/ -ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf - -COPY src/entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/entrypoint.sh -RUN ln -s /usr/local/bin/entrypoint.sh / - - -RUN rm -rf /etc/nginx/conf.d/default.conf -RUN rm -rf /etc/nginx/sites-enabled/default -RUN rm -rf /etc/nginx/sites-available/default - -RUN rm -rf /etc/nginx/nginx.conf - -COPY src/nginx.conf /etc/nginx/nginx.conf -COPY src/default.conf /etc/nginx/conf.d/ - -RUN usermod -u ${USER_ID} ${USER_NAME} -RUN groupmod -g ${USER_ID} ${GROUP_NAME} - -RUN mkdir -p /var/log/supervisor -RUN mkdir -p /var/log/nginx -RUN mkdir -p /var/cache/nginx - -RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ - chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - touch /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ - chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ - chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/nginx.conf && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /tmp - - -#USER ${USER_NAME} -EXPOSE 80 -ENTRYPOINT ["entrypoint.sh"] - diff --git a/src/docker/8.4/Dockerfile b/src/docker/8.4/Dockerfile deleted file mode 100644 index 56478c3..0000000 --- a/src/docker/8.4/Dockerfile +++ /dev/null @@ -1,127 +0,0 @@ -FROM php:8.4-rc-fpm -ARG WORKDIR=/var/www/html -ENV DOCUMENT_ROOT=${WORKDIR} -ENV LARAVEL_PROCS_NUMBER=1 -ENV DOMAIN=_ -ENV CLIENT_MAX_BODY_SIZE=15M -ENV NODE_VERSION=20.x -ARG GROUP_ID=1000 -ARG USER_ID=1000 -ENV USER_NAME=www-data -ARG GROUP_NAME=www-data -# Install system dependencies -RUN apt-get update && apt-get install -y \ - git \ - curl \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmemcached-dev \ - libzip-dev \ - libpng-dev \ - libonig-dev \ - libxml2-dev \ - librdkafka-dev \ - libpq-dev \ - openssh-server \ - zip \ - unzip \ - supervisor \ - sqlite3 \ - nano \ - cron - -RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - - # Install Node -RUN apt-get install -y nodejs -# Install nginx -RUN apt-get update && apt-get install -y nginx - -# Clear cache -RUN apt-get clean && rm -rf /var/lib/apt/lists/* -# Install Kafka -RUN git clone https://github.com/arnaud-lb/php-rdkafka.git\ - && cd php-rdkafka \ - && phpize \ - && ./configure \ - && make all -j 5 \ - && make install - -# Install Rdkafka and enable it -RUN docker-php-ext-enable rdkafka \ - && cd .. \ - && rm -rf /php-rdkafka - -# Install PHP extensions zip, mbstring, exif, bcmath, intl -RUN docker-php-ext-configure gd --with-freetype --with-jpeg -RUN docker-php-ext-install zip mbstring exif pcntl bcmath -j$(nproc) gd intl - -# Install Redis and enable it -RUN pecl install redis && docker-php-ext-enable redis - - - -# Install the php memcached extension -RUN pecl install memcached && docker-php-ext-enable memcached - -# Install the PHP pdo_mysql extention -RUN docker-php-ext-install pdo_mysql - -# Install the PHP pdo_pgsql extention -RUN docker-php-ext-install pdo_pgsql - -# Install PHP Opcache extention -RUN docker-php-ext-install opcache - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -# Set working directory -WORKDIR $WORKDIR - -RUN rm -Rf /var/www/* && \ -mkdir -p /var/www/html - -ADD src/index.php $WORKDIR/index.php -ADD src/php.ini $PHP_INI_DIR/conf.d/ -ADD src/opcache.ini $PHP_INI_DIR/conf.d/ -ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf - -COPY src/entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/entrypoint.sh -RUN ln -s /usr/local/bin/entrypoint.sh / - - -RUN rm -rf /etc/nginx/conf.d/default.conf -RUN rm -rf /etc/nginx/sites-enabled/default -RUN rm -rf /etc/nginx/sites-available/default - -RUN rm -rf /etc/nginx/nginx.conf - -COPY src/nginx.conf /etc/nginx/nginx.conf -COPY src/default.conf /etc/nginx/conf.d/ - -RUN usermod -u ${USER_ID} ${USER_NAME} -RUN groupmod -g ${USER_ID} ${GROUP_NAME} - -RUN mkdir -p /var/log/supervisor -RUN mkdir -p /var/log/nginx -RUN mkdir -p /var/cache/nginx - -RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ - chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - touch /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ - chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ - chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ - chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/nginx.conf && \ - chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /tmp - - -#USER ${USER_NAME} -EXPOSE 80 -ENTRYPOINT ["entrypoint.sh"] - diff --git a/src/docker/8.2/Dockerfile b/src/docker/Dockerfile similarity index 86% rename from src/docker/8.2/Dockerfile rename to src/docker/Dockerfile index 3f5d63c..65f7707 100644 --- a/src/docker/8.2/Dockerfile +++ b/src/docker/Dockerfile @@ -1,4 +1,5 @@ -FROM php:8.2-fpm +ARG phpVersion=8.3 +FROM php:${phpVersion}-fpm ARG WORKDIR=/var/www/html ENV DOCUMENT_ROOT=${WORKDIR} ENV LARAVEL_PROCS_NUMBER=1 @@ -87,24 +88,21 @@ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf COPY src/entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/entrypoint.sh -RUN ln -s /usr/local/bin/entrypoint.sh / +RUN chmod +x /usr/local/bin/entrypoint.sh && \ + ln -s /usr/local/bin/entrypoint.sh / -RUN rm -rf /etc/nginx/conf.d/default.conf -RUN rm -rf /etc/nginx/sites-enabled/default -RUN rm -rf /etc/nginx/sites-available/default - -RUN rm -rf /etc/nginx/nginx.conf +RUN rm -rf /etc/nginx/conf.d/default.conf && \ +rm -rf /etc/nginx/sites-enabled/default && \ + rm -rf /etc/nginx/sites-available/default && \ + rm -rf /etc/nginx/nginx.conf COPY src/nginx.conf /etc/nginx/nginx.conf COPY src/default.conf /etc/nginx/conf.d/ -RUN usermod -u ${USER_ID} ${USER_NAME} -RUN groupmod -g ${USER_ID} ${GROUP_NAME} +RUN usermod -u ${USER_ID} ${USER_NAME} && \ + groupmod -g ${USER_ID} ${GROUP_NAME} -RUN mkdir -p /var/log/supervisor -RUN mkdir -p /var/log/nginx -RUN mkdir -p /var/cache/nginx +RUN mkdir -p /var/log/supervisor /var/log/nginx /var/cache/nginx RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \