From 2332407c0efae432ddea957feef9d9ac1efc5ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20Felix=20=C5=A0ulc?= Date: Tue, 27 Feb 2024 12:54:04 +0100 Subject: [PATCH] Add PHP 8.3 --- .github/workflows/docker.yml | 1 + Makefile | 1 + README.md | 7 +- debian-php-83/Dockerfile | 95 ++++++++++++ debian-php-83/entrypoint.sh | 13 ++ debian-php-83/nginx/mime.types | 135 ++++++++++++++++++ debian-php-83/nginx/nginx.conf | 89 ++++++++++++ debian-php-83/nginx/sites.d/site.conf | 32 +++++ debian-php-83/php/php-fpm.conf | 30 ++++ debian-php-83/php/php.ini | 13 ++ debian-php-83/supervisor/services/cron.conf | 8 ++ debian-php-83/supervisor/services/nginx.conf | 7 + .../supervisor/services/php-fpm.conf | 7 + debian-php-83/supervisor/supervisord.conf | 31 ++++ debian-php-83/www/dockette.png | Bin 0 -> 35658 bytes debian-php-83/www/index.html | 13 ++ debian-php-83/www/phpinfo.php | 1 + 17 files changed, 480 insertions(+), 3 deletions(-) create mode 100644 debian-php-83/Dockerfile create mode 100755 debian-php-83/entrypoint.sh create mode 100755 debian-php-83/nginx/mime.types create mode 100755 debian-php-83/nginx/nginx.conf create mode 100755 debian-php-83/nginx/sites.d/site.conf create mode 100755 debian-php-83/php/php-fpm.conf create mode 100644 debian-php-83/php/php.ini create mode 100755 debian-php-83/supervisor/services/cron.conf create mode 100755 debian-php-83/supervisor/services/nginx.conf create mode 100755 debian-php-83/supervisor/services/php-fpm.conf create mode 100755 debian-php-83/supervisor/supervisord.conf create mode 100755 debian-php-83/www/dockette.png create mode 100755 debian-php-83/www/index.html create mode 100644 debian-php-83/www/phpinfo.php diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8b405f6..761161b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -27,3 +27,4 @@ jobs: - { context: debian-php-80, tag: php-80 } - { context: debian-php-81, tag: php-81 } - { context: debian-php-82, tag: php-82 } + - { context: debian-php-83, tag: php-83 } diff --git a/Makefile b/Makefile index 5baa8bc..5a24b84 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ docker-build-php-74: _docker-build-php-74 docker-build-php-80: _docker-build-php-80 docker-build-php-81: _docker-build-php-81 docker-build-php-82: _docker-build-php-82 +docker-build-php-83: _docker-build-php-83 docker-build-all: $(MAKE) docker-build-php-70 diff --git a/README.md b/README.md index cf568e7..a5ff443 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ | Image | Distro | PHP | |-----------------------|--------|-----| +| `dockette/web:php-83` | Buster | 8.3 | | `dockette/web:php-82` | Buster | 8.2 | | `dockette/web:php-81` | Buster | 8.1 | | `dockette/web:php-80` | Buster | 8.0 | @@ -37,7 +38,7 @@ docker run \ --rm \ --name www \ -p 80:80 \ - dockette/web:php-82 + dockette/web:php-83 ``` ## Custom Nginx config @@ -52,7 +53,7 @@ docker run \ --name www \ -v my-lovely-nginx.conf:/etc/nginx/sites.d/site.conf \ -p 80:80 \ - dockette/web:php-82 + dockette/web:php-83 ``` ## Run cron tasks @@ -67,7 +68,7 @@ docker run \ --name www \ -v my-crontab:/etc/cron.d/app \ -p 80:80 \ - dockette/web:php-82 + dockette/web:php-83 ``` Please note, this crontab should has a little bit different format. diff --git a/debian-php-83/Dockerfile b/debian-php-83/Dockerfile new file mode 100644 index 0000000..3d6b4a6 --- /dev/null +++ b/debian-php-83/Dockerfile @@ -0,0 +1,95 @@ +FROM dockette/debian:buster + +# PHP +ENV PHP_MODS_DIR=/etc/php/8.3/mods-available +ENV PHP_CLI_DIR=/etc/php/8.3/cli/ +ENV PHP_CLI_CONF_DIR=${PHP_CLI_DIR}/conf.d +ENV PHP_CGI_DIR=/etc/php/8.3/cgi/ +ENV PHP_CGI_CONF_DIR=${PHP_CGI_DIR}/conf.d +ENV PHP_FPM_DIR=/etc/php/8.3/fpm/ +ENV PHP_FPM_CONF_DIR=${PHP_FPM_DIR}/conf.d +ENV PHP_FPM_POOL_DIR=${PHP_FPM_DIR}/pool.d +ENV PHP_FPM_BIN=/usr/sbin/php-fpm8.3 +ENV PHP_FPM_CONF=/etc/php/8.3/php-fpm.conf +ENV TZ=Europe/Prague + +# INSTALLATION +RUN apt update && apt dist-upgrade -y && \ + # DEPENDENCIES ############################################################# + apt install -y wget curl apt-transport-https ca-certificates gnupg2 cron && \ + # PHP DEB.SURY.CZ ########################################################## + wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list && \ + wget -O- http://nginx.org/keys/nginx_signing.key | apt-key add - && \ + echo "deb http://nginx.org/packages/debian/ buster nginx" > /etc/apt/sources.list.d/nginx.list && \ + echo "deb-src http://nginx.org/packages/debian/ buster nginx" >> /etc/apt/sources.list.d/nginx.list && \ + apt update && \ + apt install -y --no-install-recommends \ + nginx \ + supervisor \ + php8.3-apc \ + php8.3-apcu \ + php8.3-bz2 \ + php8.3-bcmath \ + php8.3-calendar \ + php8.3-cgi \ + php8.3-cli \ + php8.3-ctype \ + php8.3-curl \ + php8.3-fpm \ + php8.3-gettext \ + php8.3-gd \ + php8.3-intl \ + php8.3-imap \ + php8.3-ldap \ + php8.3-mbstring \ + php8.3-memcached \ + php8.3-mongo \ + php8.3-mysql \ + php8.3-pdo \ + php8.3-pgsql \ + php8.3-redis \ + php8.3-soap \ + php8.3-sqlite3 \ + php8.3-ssh2 \ + php8.3-tidy \ + php8.3-zip \ + php8.3-xmlrpc \ + php8.3-xsl && \ + # COMPOSER ################################################################# + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 && \ + # NGINX #################################################################### + ln -sf /dev/stdout /var/log/nginx/access.log && \ + ln -sf /dev/stderr /var/log/nginx/error.log && \ + # CLEAN UP ################################################################# + rm /etc/nginx/conf.d/default.conf && \ + apt-get clean -y && \ + apt-get autoclean -y && \ + apt-get remove -y wget && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* /var/lib/log/* /tmp/* /var/tmp/* + +# PHP +ADD ./php/php-fpm.conf /etc/php/8.3/ +ADD ./php/php.ini /etc/php/8.3/conf.d/ + +# NGINX +ADD ./nginx/nginx.conf /etc/nginx/ +ADD ./nginx/mime.types /etc/nginx/ +ADD ./nginx/sites.d /etc/nginx/sites.d + +# WWW +ADD ./www /srv/www/ + +# SUPERVISOR +ADD ./supervisor/supervisord.conf /etc/supervisor/ +ADD ./supervisor/services /etc/supervisor/conf.d/ + +# APPLICATION +WORKDIR /srv + +# PORTS +EXPOSE 80 +COPY entrypoint.sh /usr/sbin/entrypoint.sh +RUN chmod +x /usr/sbin/entrypoint.sh +CMD ["/usr/sbin/entrypoint.sh"] diff --git a/debian-php-83/entrypoint.sh b/debian-php-83/entrypoint.sh new file mode 100755 index 0000000..98a47c0 --- /dev/null +++ b/debian-php-83/entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# loop through all the environment variables and append them to /etc/environment +# because cron doesn't "see" docker environment variables +echo -n > /etc/environment +while IFS='=' read -r key value; do + if [[ ! -z "$key" && ! -z "$value" ]]; then + echo "$key=\"$value\"" >> /etc/environment + fi +done < <(printenv) + +# run supervisord +supervisord --nodaemon --configuration /etc/supervisor/supervisord.conf diff --git a/debian-php-83/nginx/mime.types b/debian-php-83/nginx/mime.types new file mode 100755 index 0000000..fbeb077 --- /dev/null +++ b/debian-php-83/nginx/mime.types @@ -0,0 +1,135 @@ +types { + + # Data interchange + + application/atom+xml atom; + application/json json map topojson; + application/ld+json jsonld; + application/rss+xml rss; + application/vnd.geo+json geojson; + application/xml rdf xml; + + + # JavaScript + + # Normalize to standard type. + # https://tools.ietf.org/html/rfc4329#section-7.2 + application/javascript js; + + + # Manifest files + + application/manifest+json webmanifest; + application/x-web-app-manifest+json webapp; + text/cache-manifest appcache; + + + # Media files + + audio/midi mid midi kar; + audio/mp4 aac f4a f4b m4a; + audio/mpeg mp3; + audio/ogg oga ogg opus; + audio/x-realaudio ra; + audio/x-wav wav; + image/bmp bmp; + image/gif gif; + image/jpeg jpeg jpg; + image/png png; + image/svg+xml svg svgz; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/webp webp; + image/x-jng jng; + video/3gpp 3gp 3gpp; + video/mp4 f4p f4v m4v mp4; + video/mpeg mpeg mpg; + video/ogg ogv; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-mng mng; + video/x-ms-asf asf asx; + video/x-ms-wmv wmv; + video/x-msvideo avi; + + # Serving `.ico` image files with a different media type + # prevents Internet Explorer from displaying then as images: + # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee + + image/x-icon cur ico; + + + # Microsoft Office + + application/msword doc; + application/vnd.ms-excel xls; + application/vnd.ms-powerpoint ppt; + application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; + application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; + + + # Web fonts + + application/font-woff woff; + application/font-woff2 woff2; + application/vnd.ms-fontobject eot; + + # Browsers usually ignore the font media types and simply sniff + # the bytes to figure out the font type. + # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern + # + # However, Blink and WebKit based browsers will show a warning + # in the console if the following font types are served with any + # other media types. + + application/x-font-ttf ttc ttf; + font/opentype otf; + + + # Other + + application/java-archive ear jar war; + application/mac-binhex40 hqx; + application/octet-stream bin deb dll dmg exe img iso msi msm msp safariextz; + application/pdf pdf; + application/postscript ai eps ps; + application/rtf rtf; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/vnd.wap.wmlc wmlc; + application/x-7z-compressed 7z; + application/x-bb-appworld bbaw; + application/x-bittorrent torrent; + application/x-chrome-extension crx; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-opera-extension oex; + application/x-perl pl pm; + application/x-pilot pdb prc; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert crt der pem; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/xslt+xml xsl; + application/zip zip; + text/css css; + text/html htm html shtml; + text/mathml mml; + text/plain txt; + text/vcard vcard vcf; + text/vnd.rim.location.xloc xloc; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/vtt vtt; + text/x-component htc; + +} \ No newline at end of file diff --git a/debian-php-83/nginx/nginx.conf b/debian-php-83/nginx/nginx.conf new file mode 100755 index 0000000..dce759b --- /dev/null +++ b/debian-php-83/nginx/nginx.conf @@ -0,0 +1,89 @@ +user www-data; +worker_processes auto; +worker_rlimit_nofile 8192; + +pid /var/run/nginx.pid; + +events { + worker_connections 8000; +} + +http { + + ## + # Basic Settings + ## + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + types_hash_max_size 2048; + server_tokens off; + + client_max_body_size 128M; + + # server_names_hash_bucket_size 64; + # server_name_in_redirect off; + + ## + # Charset + ## + + include /etc/nginx/mime.types; + default_type application/octet-stream; + charset_types text/css text/plain text/vnd.wap.wml application/javascript application/json application/rss+xml application/xml; + + ## + # Logging Settings + ## + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log warn; + + ## + # Gzip Settings + ## + + gzip on; + gzip_disable "msie6"; + gzip_comp_level 5; + gzip_min_length 256; + gzip_proxied any; + gzip_vary on; + gzip_types + application/atom+xml + application/javascript + application/json + application/ld+json + application/manifest+json + application/rss+xml + application/vnd.geo+json + application/vnd.ms-fontobject + application/x-font-ttf + application/x-web-app-manifest+json + application/xhtml+xml + application/xml + font/opentype + image/bmp + image/svg+xml + image/x-icon + text/cache-manifest + text/css + text/plain + text/vcard + text/vnd.rim.location.xloc + text/vtt + text/x-component + text/x-cross-domain-policy; + + ## + # Virtual Host Configs + ## + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites.d/*; +} diff --git a/debian-php-83/nginx/sites.d/site.conf b/debian-php-83/nginx/sites.d/site.conf new file mode 100755 index 0000000..6daf2f4 --- /dev/null +++ b/debian-php-83/nginx/sites.d/site.conf @@ -0,0 +1,32 @@ +## +# Virtual Host Configs +## +upstream app { + server unix:/var/run/php-fpm.sock; +} + +server { + listen 80; + + index index.html index.php; + root /srv/www/; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~* \.php$ { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + + fastcgi_pass app; + fastcgi_index index.php; + include fastcgi_params; + + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + + try_files $uri =404; + } +} \ No newline at end of file diff --git a/debian-php-83/php/php-fpm.conf b/debian-php-83/php/php-fpm.conf new file mode 100755 index 0000000..78b9a06 --- /dev/null +++ b/debian-php-83/php/php-fpm.conf @@ -0,0 +1,30 @@ +[global] + +error_log = /proc/self/fd/2 +daemonize = yes + +[www] + +; if we send this to /proc/self/fd/1, it never appears +access.log = /proc/self/fd/2 + +user = www-data +group = www-data + +listen = /var/run/php-fpm.sock +listen.owner = www-data +listen.group = www-data +listen.mode = 0660 + +pm = dynamic +pm.max_children = 20 +pm.start_servers = 5 +pm.min_spare_servers = 2 +pm.max_spare_servers = 5 +pm.max_requests = 500 +catch_workers_output = yes +clear_env = no + +php_admin_value[error_log] = /var/log/php-fpm.log +php_admin_value[open_basedir]= "/tmp:/var/tmp:/var/www:/srv" +php_admin_value[upload_tmp_dir] = "/tmp" diff --git a/debian-php-83/php/php.ini b/debian-php-83/php/php.ini new file mode 100644 index 0000000..c4f4ece --- /dev/null +++ b/debian-php-83/php/php.ini @@ -0,0 +1,13 @@ +; Update memory +memory_limit = 256M +upload_max_filesize = 32M +post_max_size = 32M + +; Dates +date.timezone=Europe/Prague + +; Mailer +;sendmail_path = /usr/local/bin/phpmailer + +; No disabled functions +;disable_functions = diff --git a/debian-php-83/supervisor/services/cron.conf b/debian-php-83/supervisor/services/cron.conf new file mode 100755 index 0000000..3bbc24a --- /dev/null +++ b/debian-php-83/supervisor/services/cron.conf @@ -0,0 +1,8 @@ +[program:cron] +command = /usr/sbin/cron -f +autostart=true +autorestart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/debian-php-83/supervisor/services/nginx.conf b/debian-php-83/supervisor/services/nginx.conf new file mode 100755 index 0000000..2a3e37b --- /dev/null +++ b/debian-php-83/supervisor/services/nginx.conf @@ -0,0 +1,7 @@ +[program:nginx] +command = /usr/sbin/nginx -g "daemon off;" +autostart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/debian-php-83/supervisor/services/php-fpm.conf b/debian-php-83/supervisor/services/php-fpm.conf new file mode 100755 index 0000000..8271478 --- /dev/null +++ b/debian-php-83/supervisor/services/php-fpm.conf @@ -0,0 +1,7 @@ +[program:php-fpm] +command = %(ENV_PHP_FPM_BIN)s -F -R -y %(ENV_PHP_FPM_CONF)s +autostart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/debian-php-83/supervisor/supervisord.conf b/debian-php-83/supervisor/supervisord.conf new file mode 100755 index 0000000..97d1bb8 --- /dev/null +++ b/debian-php-83/supervisor/supervisord.conf @@ -0,0 +1,31 @@ +; See more on example documentaion. +; https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf + +[unix_http_server] +file=/var/run/supervisor.sock +chmod = 0700 +chown= nobody:nogroup +username = docker +password = loveit + +[supervisord] +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid +childlogdir=/var/log/supervisor +logfile_maxbytes = 50MB +logfile_backups=10 +loglevel = info +nodaemon = true +umask = 022 +identifier = supervisor + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///var/run/supervisor.sock +username = docker +password = loveit + +[include] +files = /etc/supervisor/conf.d/*.conf diff --git a/debian-php-83/www/dockette.png b/debian-php-83/www/dockette.png new file mode 100755 index 0000000000000000000000000000000000000000..71593d19342237cf8a605623328c23b1429b149d GIT binary patch literal 35658 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

J1IJd~t57bp9+evuK-MOALffg(3X-r9Pwr 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 + + + Dockette + + +

+

Dockette

+

It works!

+ +
+ + \ No newline at end of file diff --git a/debian-php-83/www/phpinfo.php b/debian-php-83/www/phpinfo.php new file mode 100644 index 0000000..c4837a3 --- /dev/null +++ b/debian-php-83/www/phpinfo.php @@ -0,0 +1 @@ +