From e2490c54ad310bd3580e201d572ce497297b0117 Mon Sep 17 00:00:00 2001 From: Matthias Vogel Date: Thu, 27 Nov 2025 17:31:59 +0100 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9E=95=20add=20php=208.5=20+=20?= =?UTF-8?q?=F0=9F=90=9B=20fix=20alpine=20images=20with=20version=203.22=20?= =?UTF-8?q?(php=208.1-8.5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 610 +++++++++++++----- README.md | 16 +- build-local.sh | 2 +- conf/console.yml | 2 +- docker/php-apache-dev/8.5-alpine/Dockerfile | 38 ++ .../8.5-alpine/Dockerfile.jinja2 | 11 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../conf/bin/service.d/blackfire-agent.sh | 25 + .../conf/etc/httpd/conf.d/02-dev.conf | 8 + .../conf/etc/httpd/vhost.common.d/.gitkeep | 0 .../conf/etc/httpd/vhost.common.d/02-dev.conf | 10 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ .../provision/entrypoint.d/20-apache-dev.sh | 5 + docker/php-apache-dev/8.5/Dockerfile | 32 + docker/php-apache-dev/8.5/Dockerfile.jinja2 | 12 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../8.5/conf/bin/service.d/blackfire-agent.sh | 25 + .../8.5/conf/etc/httpd/conf.d/02-dev.conf | 8 + .../conf/etc/httpd/vhost.common.d/.gitkeep | 0 .../conf/etc/httpd/vhost.common.d/02-dev.conf | 10 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../8.5/conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ .../provision/entrypoint.d/20-apache-dev.sh | 5 + docker/php-apache/8.5-alpine/Dockerfile | 33 + .../php-apache/8.5-alpine/Dockerfile.jinja2 | 12 + .../conf/bin/service.d/httpd.d/10-init.sh | 6 + .../8.5-alpine/conf/bin/service.d/httpd.sh | 13 + .../8.5-alpine/conf/etc/httpd/conf.d/.gitkeep | 0 .../etc/httpd/conf.d/10-error-document.conf | 15 + .../conf/etc/httpd/conf.d/10-log.conf | 4 + .../conf/etc/httpd/conf.d/10-php.conf | 37 ++ .../conf/etc/httpd/conf.d/10-server.conf | 18 + .../8.5-alpine/conf/etc/httpd/global.conf | 1 + .../8.5-alpine/conf/etc/httpd/main.conf | 10 + .../8.5-alpine/conf/etc/httpd/php.conf | 1 + .../8.5-alpine/conf/etc/httpd/ssl/server.crt | 28 + .../8.5-alpine/conf/etc/httpd/ssl/server.csr | 26 + .../8.5-alpine/conf/etc/httpd/ssl/server.key | 51 ++ .../conf/etc/httpd/vhost.common.conf | 7 + .../conf/etc/httpd/vhost.common.d/.gitkeep | 0 .../httpd/vhost.common.d/01-boilerplate.conf | 1 + .../8.5-alpine/conf/etc/httpd/vhost.conf | 36 ++ .../8.5-alpine/conf/etc/httpd/vhost.ssl.conf | 26 + .../conf/etc/supervisor.d/apache.conf | 14 + .../conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-apache.sh | 100 +++ .../conf/provision/bootstrap.d/10-php.sh | 8 + .../conf/provision/entrypoint.d/.gitkeep | 0 .../conf/provision/entrypoint.d/20-apache.sh | 16 + docker/php-apache/8.5/Dockerfile | 30 + docker/php-apache/8.5/Dockerfile.jinja2 | 13 + .../8.5/conf/bin/service.d/httpd.d/10-init.sh | 6 + .../8.5/conf/bin/service.d/httpd.sh | 14 + .../8.5/conf/etc/httpd/conf.d/.gitkeep | 0 .../etc/httpd/conf.d/10-error-document.conf | 15 + .../8.5/conf/etc/httpd/conf.d/10-log.conf | 4 + .../8.5/conf/etc/httpd/conf.d/10-php.conf | 37 ++ .../8.5/conf/etc/httpd/conf.d/10-server.conf | 18 + .../php-apache/8.5/conf/etc/httpd/global.conf | 1 + .../php-apache/8.5/conf/etc/httpd/main.conf | 10 + docker/php-apache/8.5/conf/etc/httpd/php.conf | 1 + .../8.5/conf/etc/httpd/ssl/server.crt | 28 + .../8.5/conf/etc/httpd/ssl/server.csr | 26 + .../8.5/conf/etc/httpd/ssl/server.key | 51 ++ .../8.5/conf/etc/httpd/vhost.common.conf | 7 + .../conf/etc/httpd/vhost.common.d/.gitkeep | 0 .../httpd/vhost.common.d/01-boilerplate.conf | 1 + .../php-apache/8.5/conf/etc/httpd/vhost.conf | 36 ++ .../8.5/conf/etc/httpd/vhost.ssl.conf | 26 + .../8.5/conf/etc/supervisor.d/apache.conf | 14 + .../8.5/conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-apache.sh | 100 +++ .../8.5/conf/provision/bootstrap.d/10-php.sh | 8 + .../8.5/conf/provision/entrypoint.d/.gitkeep | 0 .../conf/provision/entrypoint.d/20-apache.sh | 16 + docker/php-dev/8.5-alpine/Dockerfile | 30 + docker/php-dev/8.5-alpine/Dockerfile.jinja2 | 7 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../conf/bin/service.d/blackfire-agent.sh | 25 + .../bin/service.d/ssh.d/99-development.sh | 3 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/bootstrap.d/99-development.sh | 5 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ docker/php-dev/8.5/Dockerfile | 24 + docker/php-dev/8.5/Dockerfile.jinja2 | 8 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../8.5/conf/bin/service.d/blackfire-agent.sh | 25 + .../bin/service.d/ssh.d/99-development.sh | 3 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../8.5/conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/bootstrap.d/99-development.sh | 5 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ docker/php-nginx-dev/8.5-alpine/Dockerfile | 38 ++ .../8.5-alpine/Dockerfile.jinja2 | 11 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../conf/bin/service.d/blackfire-agent.sh | 25 + .../conf/etc/nginx/conf.d/02-dev.conf | 1 + .../conf/etc/nginx/vhost.common.d/.gitkeep | 0 .../conf/etc/nginx/vhost.common.d/02-dev.conf | 6 + .../conf/etc/nginx/vhost.common.d/10-log.conf | 2 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-nginx.sh | 6 + .../conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ .../provision/entrypoint.d/20-nginx-dev.sh | 7 + docker/php-nginx-dev/8.5/Dockerfile | 32 + docker/php-nginx-dev/8.5/Dockerfile.jinja2 | 12 + .../service.d/blackfire-agent.d/10-init.sh | 1 + .../8.5/conf/bin/service.d/blackfire-agent.sh | 25 + .../8.5/conf/etc/nginx/conf.d/02-dev.conf | 1 + .../conf/etc/nginx/vhost.common.d/.gitkeep | 0 .../conf/etc/nginx/vhost.common.d/02-dev.conf | 6 + .../conf/etc/nginx/vhost.common.d/10-log.conf | 2 + .../etc/supervisor.d/blackfire-agent.conf | 14 + .../8.5/conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-nginx.sh | 6 + .../8.5/conf/provision/bootstrap.d/10-php.sh | 24 + .../bootstrap.d/20-php-module-blackfire.sh | 6 + .../bootstrap.d/20-php-module-opcache.sh | 11 + .../bootstrap.d/20-php-module-xdebug.sh | 33 + .../provision/entrypoint.d/10-php-debugger.sh | 106 +++ .../provision/entrypoint.d/20-nginx-dev.sh | 7 + docker/php-nginx/8.5-alpine/Dockerfile | 24 + docker/php-nginx/8.5-alpine/Dockerfile.jinja2 | 13 + .../conf/bin/service.d/nginx.d/10-init.sh | 5 + .../8.5-alpine/conf/bin/service.d/nginx.sh | 10 + .../8.5-alpine/conf/etc/nginx/conf.d/.gitkeep | 0 .../conf/etc/nginx/conf.d/10-php.conf | 3 + .../8.5-alpine/conf/etc/nginx/global.conf | 1 + .../8.5-alpine/conf/etc/nginx/main.conf | 4 + .../8.5-alpine/conf/etc/nginx/nginx.conf | 34 + .../8.5-alpine/conf/etc/nginx/php.conf | 1 + .../8.5-alpine/conf/etc/nginx/ssl/server.crt | 28 + .../8.5-alpine/conf/etc/nginx/ssl/server.csr | 26 + .../8.5-alpine/conf/etc/nginx/ssl/server.key | 51 ++ .../conf/etc/nginx/vhost.common.conf | 2 + .../conf/etc/nginx/vhost.common.d/.gitkeep | 0 .../etc/nginx/vhost.common.d/10-general.conf | 1 + .../vhost.common.d/10-location-root.conf | 3 + .../conf/etc/nginx/vhost.common.d/10-log.conf | 2 + .../conf/etc/nginx/vhost.common.d/10-php.conf | 7 + .../8.5-alpine/conf/etc/nginx/vhost.conf | 28 + .../8.5-alpine/conf/etc/nginx/vhost.ssl.conf | 6 + .../conf/etc/supervisor.d/nginx.conf | 14 + .../conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-nginx.sh | 38 ++ .../conf/provision/bootstrap.d/10-php.sh | 7 + .../conf/provision/entrypoint.d/.gitkeep | 0 .../conf/provision/entrypoint.d/20-nginx.sh | 24 + docker/php-nginx/8.5/Dockerfile | 28 + docker/php-nginx/8.5/Dockerfile.jinja2 | 14 + .../8.5/conf/bin/service.d/nginx.d/10-init.sh | 5 + .../php-nginx/8.5/conf/bin/service.d/nginx.sh | 10 + .../8.5/conf/etc/nginx/conf.d/.gitkeep | 0 .../8.5/conf/etc/nginx/conf.d/10-php.conf | 3 + .../php-nginx/8.5/conf/etc/nginx/global.conf | 1 + docker/php-nginx/8.5/conf/etc/nginx/main.conf | 4 + docker/php-nginx/8.5/conf/etc/nginx/php.conf | 1 + .../8.5/conf/etc/nginx/ssl/server.crt | 28 + .../8.5/conf/etc/nginx/ssl/server.csr | 26 + .../8.5/conf/etc/nginx/ssl/server.key | 51 ++ .../8.5/conf/etc/nginx/vhost.common.conf | 2 + .../conf/etc/nginx/vhost.common.d/.gitkeep | 0 .../etc/nginx/vhost.common.d/10-general.conf | 1 + .../vhost.common.d/10-location-root.conf | 3 + .../conf/etc/nginx/vhost.common.d/10-log.conf | 2 + .../conf/etc/nginx/vhost.common.d/10-php.conf | 7 + .../php-nginx/8.5/conf/etc/nginx/vhost.conf | 28 + .../8.5/conf/etc/nginx/vhost.ssl.conf | 6 + .../8.5/conf/etc/supervisor.d/nginx.conf | 14 + .../8.5/conf/provision/bootstrap.d/.gitkeep | 0 .../conf/provision/bootstrap.d/10-nginx.sh | 38 ++ .../8.5/conf/provision/bootstrap.d/10-php.sh | 7 + .../8.5/conf/provision/entrypoint.d/.gitkeep | 0 .../conf/provision/entrypoint.d/20-nginx.sh | 24 + docker/php-official/5.6/Dockerfile | 2 +- docker/php-official/7.0/Dockerfile | 2 +- docker/php-official/7.1-alpine/Dockerfile | 4 +- docker/php-official/7.1/Dockerfile | 2 +- docker/php-official/7.2-alpine/Dockerfile | 4 +- docker/php-official/7.2/Dockerfile | 2 +- docker/php-official/7.3-alpine/Dockerfile | 4 +- docker/php-official/7.3/Dockerfile | 2 +- docker/php-official/7.4-alpine/Dockerfile | 4 +- docker/php-official/7.4/Dockerfile | 2 +- docker/php-official/8.0-alpine/Dockerfile | 4 +- docker/php-official/8.0/Dockerfile | 2 +- docker/php-official/8.1-alpine/Dockerfile | 4 +- docker/php-official/8.1/Dockerfile | 2 +- docker/php-official/8.2-alpine/Dockerfile | 8 +- docker/php-official/8.2/Dockerfile | 2 +- docker/php-official/8.3-alpine/Dockerfile | 8 +- docker/php-official/8.3/Dockerfile | 2 +- docker/php-official/8.4-alpine/Dockerfile | 6 +- docker/php-official/8.4/Dockerfile | 2 +- docker/php-official/8.5-alpine/Dockerfile | 249 +++++++ .../php-official/8.5-alpine/Dockerfile.jinja2 | 35 + docker/php-official/8.5-alpine/conf/VERSION | 1 + .../8.5-alpine/conf/bin/bootstrap.sh | 3 + .../8.5-alpine/conf/bin/config.sh | 117 ++++ .../8.5-alpine/conf/bin/control.sh | 160 +++++ .../8.5-alpine/conf/bin/entrypoint.d/cli.sh | 19 + .../conf/bin/entrypoint.d/default.sh | 3 + .../8.5-alpine/conf/bin/entrypoint.d/noop.sh | 7 + .../8.5-alpine/conf/bin/entrypoint.d/root.sh | 14 + .../conf/bin/entrypoint.d/supervisord.sh | 9 + .../8.5-alpine/conf/bin/entrypoint.sh | 46 ++ .../8.5-alpine/conf/bin/provision | 8 + .../8.5-alpine/conf/bin/provision.py | 328 ++++++++++ .../conf/bin/service.d/cron.d/10-init.sh | 16 + .../8.5-alpine/conf/bin/service.d/cron.sh | 10 + .../conf/bin/service.d/dnsmasq.d/10-init.sh | 37 ++ .../8.5-alpine/conf/bin/service.d/dnsmasq.sh | 11 + .../conf/bin/service.d/php-fpm.d/10-init.sh | 12 + .../bin/service.d/php-fpm.d/11-clear-env.sh | 38 ++ .../8.5-alpine/conf/bin/service.d/php-fpm.sh | 10 + .../conf/bin/service.d/postfix.d/10-init.sh | 30 + .../8.5-alpine/conf/bin/service.d/postfix.sh | 42 ++ .../conf/bin/service.d/ssh.d/10-init.sh | 7 + .../8.5-alpine/conf/bin/service.d/ssh.sh | 10 + .../bin/service.d/supervisor.d/10-init.sh | 1 + .../conf/bin/service.d/supervisor.sh | 11 + .../conf/bin/service.d/syslog-ng.d/10-init.sh | 10 + .../conf/bin/service.d/syslog-ng.sh | 10 + .../bin/usr-bin/container-file-auto-restore | 26 + .../conf/bin/usr-bin/docker-ansible-install | 77 +++ .../conf/bin/usr-bin/docker-cronjob | 26 + .../conf/bin/usr-bin/docker-php-setting | 44 ++ .../conf/bin/usr-bin/docker-provision | 9 + .../conf/bin/usr-bin/docker-service | 89 +++ .../conf/bin/usr-bin/docker-service-disable | 3 + .../conf/bin/usr-bin/docker-service-enable | 4 + .../8.5-alpine/conf/bin/usr-bin/service | 86 +++ .../conf/bin/usr-bin/version-compare | 43 ++ .../8.5-alpine/conf/etc/cron/.gitkeep | 0 .../8.5-alpine/conf/etc/logrotate.d/php5-fpm | 12 + .../8.5-alpine/conf/etc/logrotate.d/syslog-ng | 38 ++ .../8.5-alpine/conf/etc/php/conf.d/.gitkeep | 0 .../8.5-alpine/conf/etc/php/fpm/.gitkeep | 0 .../8.5-alpine/conf/etc/php/php.ini | 1 + .../8.5-alpine/conf/etc/php/php.webdevops.ini | 34 + .../8.5-alpine/conf/etc/supervisor.conf | 20 + .../8.5-alpine/conf/etc/supervisor.d/.gitkeep | 0 .../conf/etc/supervisor.d/cron.conf | 14 + .../conf/etc/supervisor.d/dnsmasq.conf | 14 + .../conf/etc/supervisor.d/php-fpm.conf | 15 + .../conf/etc/supervisor.d/postfix.conf | 15 + .../8.5-alpine/conf/etc/supervisor.d/ssh.conf | 14 + .../conf/etc/supervisor.d/syslog.conf | 13 + .../conf/etc/syslog-ng/syslog-ng.conf | 48 ++ .../8.5-alpine/conf/provision/ansible.cfg | 0 .../conf/provision/bootstrap.d/.gitkeep | 0 .../provision/bootstrap.d/10-entrypoint.sh | 14 + .../provision/bootstrap.d/10-permissions.sh | 2 + .../conf/provision/bootstrap.d/10-php-init.sh | 4 + .../provision/bootstrap.d/10-supervisor.sh | 10 + .../bootstrap.d/10-user-application.sh | 8 + .../conf/provision/bootstrap.d/11-php-conf.sh | 10 + .../conf/provision/bootstrap.d/20-app.sh | 5 + .../bootstrap.d/20-setup-php-fpm-pool.sh | 45 ++ .../provision/bootstrap.d/20-setup-php-fpm.sh | 43 ++ .../provision/bootstrap.d/20-setup-php.sh | 11 + .../provision/bootstrap.d/30-setup-ioncube.sh | 50 ++ .../conf/provision/bootstrap.d/90-cleanup.sh | 12 + .../conf/provision/build.d/.gitkeep | 0 .../conf/provision/build.d/10-cleanup.sh | 7 + .../conf/provision/entrypoint.d/.gitkeep | 0 .../provision/entrypoint.d/05-permissions.sh | 2 + .../conf/provision/entrypoint.d/20-php-fpm.sh | 80 +++ .../conf/provision/entrypoint.d/20-php.sh | 75 +++ .../conf/provision/onbuild.d/.gitkeep | 0 .../8.5-alpine/conf/provision/roles/.gitkeep | 0 .../conf/provision/service.d/.gitkeep | 0 .../conf/provision/service.d/cron.sh | 13 + .../conf/provision/service.d/dnsmasq.sh | 24 + .../conf/provision/service.d/postfix.sh | 32 + .../conf/provision/service.d/ssh.sh | 17 + .../conf/provision/service.d/syslog.sh | 41 ++ .../conf/provision/variables-webdevops.yml | 7 + .../8.5-alpine/conf/provision/variables.yml | 7 + docker/php-official/8.5/Dockerfile | 227 +++++++ docker/php-official/8.5/Dockerfile.jinja2 | 37 ++ docker/php-official/8.5/conf/VERSION | 1 + docker/php-official/8.5/conf/bin/bootstrap.sh | 3 + docker/php-official/8.5/conf/bin/config.sh | 117 ++++ docker/php-official/8.5/conf/bin/control.sh | 160 +++++ .../8.5/conf/bin/entrypoint.d/cli.sh | 19 + .../8.5/conf/bin/entrypoint.d/default.sh | 3 + .../8.5/conf/bin/entrypoint.d/noop.sh | 7 + .../8.5/conf/bin/entrypoint.d/root.sh | 14 + .../8.5/conf/bin/entrypoint.d/supervisord.sh | 9 + .../php-official/8.5/conf/bin/entrypoint.sh | 46 ++ docker/php-official/8.5/conf/bin/provision | 8 + docker/php-official/8.5/conf/bin/provision.py | 328 ++++++++++ .../8.5/conf/bin/service.d/cron.d/10-init.sh | 16 + .../8.5/conf/bin/service.d/cron.sh | 10 + .../conf/bin/service.d/dnsmasq.d/10-init.sh | 37 ++ .../8.5/conf/bin/service.d/dnsmasq.sh | 11 + .../conf/bin/service.d/php-fpm.d/10-init.sh | 12 + .../bin/service.d/php-fpm.d/11-clear-env.sh | 38 ++ .../8.5/conf/bin/service.d/php-fpm.sh | 10 + .../conf/bin/service.d/postfix.d/10-init.sh | 30 + .../8.5/conf/bin/service.d/postfix.sh | 42 ++ .../8.5/conf/bin/service.d/ssh.d/10-init.sh | 7 + .../8.5/conf/bin/service.d/ssh.sh | 10 + .../bin/service.d/supervisor.d/10-init.sh | 1 + .../8.5/conf/bin/service.d/supervisor.sh | 11 + .../conf/bin/service.d/syslog-ng.d/10-init.sh | 10 + .../8.5/conf/bin/service.d/syslog-ng.sh | 10 + .../bin/usr-bin/container-file-auto-restore | 26 + .../conf/bin/usr-bin/docker-ansible-install | 77 +++ .../8.5/conf/bin/usr-bin/docker-cronjob | 26 + .../8.5/conf/bin/usr-bin/docker-php-setting | 44 ++ .../8.5/conf/bin/usr-bin/docker-provision | 9 + .../8.5/conf/bin/usr-bin/docker-service | 89 +++ .../conf/bin/usr-bin/docker-service-disable | 3 + .../conf/bin/usr-bin/docker-service-enable | 4 + .../php-official/8.5/conf/bin/usr-bin/service | 86 +++ .../8.5/conf/bin/usr-bin/version-compare | 43 ++ .../php-official/8.5/conf/etc/cron/.gitkeep | 0 .../8.5/conf/etc/logrotate.d/php5-fpm | 12 + .../8.5/conf/etc/logrotate.d/syslog-ng | 38 ++ .../8.5/conf/etc/php/conf.d/.gitkeep | 0 .../8.5/conf/etc/php/fpm/.gitkeep | 0 docker/php-official/8.5/conf/etc/php/php.ini | 1 + .../8.5/conf/etc/php/php.webdevops.ini | 34 + .../php-official/8.5/conf/etc/supervisor.conf | 20 + .../8.5/conf/etc/supervisor.d/.gitkeep | 0 .../8.5/conf/etc/supervisor.d/cron.conf | 14 + .../8.5/conf/etc/supervisor.d/dnsmasq.conf | 14 + .../8.5/conf/etc/supervisor.d/php-fpm.conf | 15 + .../8.5/conf/etc/supervisor.d/postfix.conf | 15 + .../8.5/conf/etc/supervisor.d/ssh.conf | 14 + .../8.5/conf/etc/supervisor.d/syslog.conf | 13 + .../8.5/conf/etc/syslog-ng/syslog-ng.conf | 48 ++ .../8.5/conf/provision/ansible.cfg | 0 .../8.5/conf/provision/bootstrap.d/.gitkeep | 0 .../provision/bootstrap.d/10-entrypoint.sh | 14 + .../provision/bootstrap.d/10-permissions.sh | 2 + .../conf/provision/bootstrap.d/10-php-init.sh | 4 + .../provision/bootstrap.d/10-supervisor.sh | 10 + .../bootstrap.d/10-user-application.sh | 10 + .../conf/provision/bootstrap.d/11-php-conf.sh | 10 + .../8.5/conf/provision/bootstrap.d/20-app.sh | 5 + .../bootstrap.d/20-setup-php-fpm-pool.sh | 45 ++ .../provision/bootstrap.d/20-setup-php-fpm.sh | 43 ++ .../provision/bootstrap.d/20-setup-php.sh | 11 + .../provision/bootstrap.d/30-setup-ioncube.sh | 50 ++ .../conf/provision/bootstrap.d/90-cleanup.sh | 12 + .../8.5/conf/provision/build.d/.gitkeep | 0 .../8.5/conf/provision/build.d/10-cleanup.sh | 7 + .../8.5/conf/provision/entrypoint.d/.gitkeep | 0 .../provision/entrypoint.d/05-permissions.sh | 2 + .../conf/provision/entrypoint.d/20-php-fpm.sh | 80 +++ .../8.5/conf/provision/entrypoint.d/20-php.sh | 75 +++ .../8.5/conf/provision/onbuild.d/.gitkeep | 0 .../8.5/conf/provision/roles/.gitkeep | 0 .../8.5/conf/provision/service.d/.gitkeep | 0 .../8.5/conf/provision/service.d/cron.sh | 13 + .../8.5/conf/provision/service.d/dnsmasq.sh | 24 + .../8.5/conf/provision/service.d/postfix.sh | 32 + .../8.5/conf/provision/service.d/ssh.sh | 17 + .../8.5/conf/provision/service.d/syslog.sh | 41 ++ .../conf/provision/variables-webdevops.yml | 7 + .../8.5/conf/provision/variables.yml | 7 + docker/php/8.5 | 1 + docker/php/8.5-alpine | 1 + .../dockerfiles/include/image-tag-php.rst | 2 + template/Dockerfile/images/php.jinja2 | 52 +- 389 files changed, 8582 insertions(+), 231 deletions(-) create mode 100644 docker/php-apache-dev/8.5-alpine/Dockerfile create mode 100644 docker/php-apache-dev/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/etc/httpd/conf.d/02-dev.conf create mode 100644 docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep create mode 100644 docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/02-dev.conf create mode 100644 docker/php-apache-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/20-apache-dev.sh create mode 100644 docker/php-apache-dev/8.5/Dockerfile create mode 100644 docker/php-apache-dev/8.5/Dockerfile.jinja2 create mode 100644 docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-apache-dev/8.5/conf/etc/httpd/conf.d/02-dev.conf create mode 100644 docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/.gitkeep create mode 100644 docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/02-dev.conf create mode 100644 docker/php-apache-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-apache-dev/8.5/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-apache-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-apache-dev/8.5/conf/provision/entrypoint.d/20-apache-dev.sh create mode 100644 docker/php-apache/8.5-alpine/Dockerfile create mode 100644 docker/php-apache/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.d/10-init.sh create mode 100644 docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.sh create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/.gitkeep create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-error-document.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-log.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-php.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-server.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/global.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/main.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/php.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.crt create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.csr create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.key create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/01-boilerplate.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.ssl.conf create mode 100644 docker/php-apache/8.5-alpine/conf/etc/supervisor.d/apache.conf create mode 100644 docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-apache.sh create mode 100644 docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/20-apache.sh create mode 100644 docker/php-apache/8.5/Dockerfile create mode 100644 docker/php-apache/8.5/Dockerfile.jinja2 create mode 100644 docker/php-apache/8.5/conf/bin/service.d/httpd.d/10-init.sh create mode 100644 docker/php-apache/8.5/conf/bin/service.d/httpd.sh create mode 100644 docker/php-apache/8.5/conf/etc/httpd/conf.d/.gitkeep create mode 100644 docker/php-apache/8.5/conf/etc/httpd/conf.d/10-error-document.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/conf.d/10-log.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/conf.d/10-php.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/conf.d/10-server.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/global.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/main.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/php.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/ssl/server.crt create mode 100644 docker/php-apache/8.5/conf/etc/httpd/ssl/server.csr create mode 100644 docker/php-apache/8.5/conf/etc/httpd/ssl/server.key create mode 100644 docker/php-apache/8.5/conf/etc/httpd/vhost.common.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/.gitkeep create mode 100644 docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/01-boilerplate.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/vhost.conf create mode 100644 docker/php-apache/8.5/conf/etc/httpd/vhost.ssl.conf create mode 100644 docker/php-apache/8.5/conf/etc/supervisor.d/apache.conf create mode 100644 docker/php-apache/8.5/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-apache/8.5/conf/provision/bootstrap.d/10-apache.sh create mode 100644 docker/php-apache/8.5/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-apache/8.5/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-apache/8.5/conf/provision/entrypoint.d/20-apache.sh create mode 100644 docker/php-dev/8.5-alpine/Dockerfile create mode 100644 docker/php-dev/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-dev/8.5-alpine/conf/bin/service.d/ssh.d/99-development.sh create mode 100644 docker/php-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/99-development.sh create mode 100644 docker/php-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-dev/8.5/Dockerfile create mode 100644 docker/php-dev/8.5/Dockerfile.jinja2 create mode 100644 docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-dev/8.5/conf/bin/service.d/ssh.d/99-development.sh create mode 100644 docker/php-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-dev/8.5/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-dev/8.5/conf/provision/bootstrap.d/99-development.sh create mode 100644 docker/php-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/Dockerfile create mode 100644 docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/conf.d/02-dev.conf create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/02-dev.conf create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/20-nginx-dev.sh create mode 100644 docker/php-nginx-dev/8.5/Dockerfile create mode 100644 docker/php-nginx-dev/8.5/Dockerfile.jinja2 create mode 100644 docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh create mode 100644 docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.sh create mode 100644 docker/php-nginx-dev/8.5/conf/etc/nginx/conf.d/02-dev.conf create mode 100644 docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/.gitkeep create mode 100644 docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/02-dev.conf create mode 100644 docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/10-log.conf create mode 100644 docker/php-nginx-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-nginx.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh create mode 100644 docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/20-nginx-dev.sh create mode 100644 docker/php-nginx/8.5-alpine/Dockerfile create mode 100644 docker/php-nginx/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.d/10-init.sh create mode 100644 docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.sh create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/.gitkeep create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/10-php.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/global.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/main.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/nginx.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/php.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.crt create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.csr create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.key create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-general.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-location-root.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-php.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.ssl.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/etc/supervisor.d/nginx.conf create mode 100644 docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh create mode 100644 docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/20-nginx.sh create mode 100644 docker/php-nginx/8.5/Dockerfile create mode 100644 docker/php-nginx/8.5/Dockerfile.jinja2 create mode 100644 docker/php-nginx/8.5/conf/bin/service.d/nginx.d/10-init.sh create mode 100644 docker/php-nginx/8.5/conf/bin/service.d/nginx.sh create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/conf.d/.gitkeep create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/conf.d/10-php.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/global.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/main.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/php.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/ssl/server.crt create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/ssl/server.csr create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/ssl/server.key create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/.gitkeep create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-general.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-location-root.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-log.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-php.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.conf create mode 100644 docker/php-nginx/8.5/conf/etc/nginx/vhost.ssl.conf create mode 100644 docker/php-nginx/8.5/conf/etc/supervisor.d/nginx.conf create mode 100644 docker/php-nginx/8.5/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-nginx/8.5/conf/provision/bootstrap.d/10-nginx.sh create mode 100644 docker/php-nginx/8.5/conf/provision/bootstrap.d/10-php.sh create mode 100644 docker/php-nginx/8.5/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-nginx/8.5/conf/provision/entrypoint.d/20-nginx.sh create mode 100644 docker/php-official/8.5-alpine/Dockerfile create mode 100644 docker/php-official/8.5-alpine/Dockerfile.jinja2 create mode 100644 docker/php-official/8.5-alpine/conf/VERSION create mode 100644 docker/php-official/8.5-alpine/conf/bin/bootstrap.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/config.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/control.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.d/cli.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.d/default.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.d/noop.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.d/root.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.d/supervisord.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/entrypoint.sh create mode 100755 docker/php-official/8.5-alpine/conf/bin/provision create mode 100755 docker/php-official/8.5-alpine/conf/bin/provision.py create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/cron.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/cron.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/11-clear-env.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/postfix.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/postfix.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/ssh.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/ssh.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.d/10-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.sh create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/container-file-auto-restore create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-ansible-install create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-cronjob create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-php-setting create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-provision create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-disable create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-enable create mode 100755 docker/php-official/8.5-alpine/conf/bin/usr-bin/service create mode 100644 docker/php-official/8.5-alpine/conf/bin/usr-bin/version-compare create mode 100644 docker/php-official/8.5-alpine/conf/etc/cron/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/etc/logrotate.d/php5-fpm create mode 100644 docker/php-official/8.5-alpine/conf/etc/logrotate.d/syslog-ng create mode 100644 docker/php-official/8.5-alpine/conf/etc/php/conf.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/etc/php/fpm/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/etc/php/php.ini create mode 100644 docker/php-official/8.5-alpine/conf/etc/php/php.webdevops.ini create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/cron.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/dnsmasq.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/php-fpm.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/postfix.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/ssh.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/supervisor.d/syslog.conf create mode 100644 docker/php-official/8.5-alpine/conf/etc/syslog-ng/syslog-ng.conf create mode 100644 docker/php-official/8.5-alpine/conf/provision/ansible.cfg create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-entrypoint.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-permissions.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-php-init.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-supervisor.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-user-application.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/11-php-conf.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-app.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/30-setup-ioncube.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/bootstrap.d/90-cleanup.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/build.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/build.d/10-cleanup.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/entrypoint.d/05-permissions.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php-fpm.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/onbuild.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/roles/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/.gitkeep create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/cron.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/dnsmasq.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/postfix.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/ssh.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/service.d/syslog.sh create mode 100644 docker/php-official/8.5-alpine/conf/provision/variables-webdevops.yml create mode 100644 docker/php-official/8.5-alpine/conf/provision/variables.yml create mode 100644 docker/php-official/8.5/Dockerfile create mode 100644 docker/php-official/8.5/Dockerfile.jinja2 create mode 100644 docker/php-official/8.5/conf/VERSION create mode 100644 docker/php-official/8.5/conf/bin/bootstrap.sh create mode 100644 docker/php-official/8.5/conf/bin/config.sh create mode 100644 docker/php-official/8.5/conf/bin/control.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.d/cli.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.d/default.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.d/noop.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.d/root.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.d/supervisord.sh create mode 100644 docker/php-official/8.5/conf/bin/entrypoint.sh create mode 100755 docker/php-official/8.5/conf/bin/provision create mode 100755 docker/php-official/8.5/conf/bin/provision.py create mode 100644 docker/php-official/8.5/conf/bin/service.d/cron.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/cron.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/dnsmasq.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/dnsmasq.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/php-fpm.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/php-fpm.d/11-clear-env.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/php-fpm.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/postfix.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/postfix.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/ssh.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/ssh.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/supervisor.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/supervisor.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/syslog-ng.d/10-init.sh create mode 100644 docker/php-official/8.5/conf/bin/service.d/syslog-ng.sh create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/container-file-auto-restore create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-ansible-install create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-cronjob create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-php-setting create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-provision create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-service create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-service-disable create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/docker-service-enable create mode 100755 docker/php-official/8.5/conf/bin/usr-bin/service create mode 100644 docker/php-official/8.5/conf/bin/usr-bin/version-compare create mode 100644 docker/php-official/8.5/conf/etc/cron/.gitkeep create mode 100644 docker/php-official/8.5/conf/etc/logrotate.d/php5-fpm create mode 100644 docker/php-official/8.5/conf/etc/logrotate.d/syslog-ng create mode 100644 docker/php-official/8.5/conf/etc/php/conf.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/etc/php/fpm/.gitkeep create mode 100644 docker/php-official/8.5/conf/etc/php/php.ini create mode 100644 docker/php-official/8.5/conf/etc/php/php.webdevops.ini create mode 100644 docker/php-official/8.5/conf/etc/supervisor.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/cron.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/dnsmasq.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/php-fpm.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/postfix.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/ssh.conf create mode 100644 docker/php-official/8.5/conf/etc/supervisor.d/syslog.conf create mode 100644 docker/php-official/8.5/conf/etc/syslog-ng/syslog-ng.conf create mode 100644 docker/php-official/8.5/conf/provision/ansible.cfg create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/10-entrypoint.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/10-permissions.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/10-php-init.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/10-supervisor.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/10-user-application.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/11-php-conf.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/20-app.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/30-setup-ioncube.sh create mode 100644 docker/php-official/8.5/conf/provision/bootstrap.d/90-cleanup.sh create mode 100644 docker/php-official/8.5/conf/provision/build.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/build.d/10-cleanup.sh create mode 100644 docker/php-official/8.5/conf/provision/entrypoint.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/entrypoint.d/05-permissions.sh create mode 100644 docker/php-official/8.5/conf/provision/entrypoint.d/20-php-fpm.sh create mode 100644 docker/php-official/8.5/conf/provision/entrypoint.d/20-php.sh create mode 100644 docker/php-official/8.5/conf/provision/onbuild.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/roles/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/service.d/.gitkeep create mode 100644 docker/php-official/8.5/conf/provision/service.d/cron.sh create mode 100644 docker/php-official/8.5/conf/provision/service.d/dnsmasq.sh create mode 100644 docker/php-official/8.5/conf/provision/service.d/postfix.sh create mode 100644 docker/php-official/8.5/conf/provision/service.d/ssh.sh create mode 100644 docker/php-official/8.5/conf/provision/service.d/syslog.sh create mode 100644 docker/php-official/8.5/conf/provision/variables-webdevops.yml create mode 100644 docker/php-official/8.5/conf/provision/variables.yml create mode 120000 docker/php/8.5 create mode 120000 docker/php/8.5-alpine diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c988057a7..9bf93863e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,10 +28,10 @@ stages: - 'cd docker/bootstrap/alpine' - 'docker build --no-cache -t webdevops/bootstrap:alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/bootstrap:alpine" >> Dockerfile_67b33780216a78.44838910' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780216a78.44838910' + - 'echo "FROM webdevops/bootstrap:alpine" >> Dockerfile_69287be80a1128.04599452' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1128.04599452' - 'bundle install' - - 'bash serverspec.sh spec/docker/bootstrap_spec.rb webdevops/bootstrap:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jvb3RzdHJhcDphbHBpbmUiLCJET0NLRVJfVEFHIjoiYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IiIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjE2YTc4LjQ0ODM4OTEwIn0= Dockerfile_67b33780216a78.44838910' + - 'bash serverspec.sh spec/docker/bootstrap_spec.rb webdevops/bootstrap:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jvb3RzdHJhcDphbHBpbmUiLCJET0NLRVJfVEFHIjoiYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IiIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MGExMTI4LjA0NTk5NDUyIn0= Dockerfile_69287be80a1128.04599452' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/bootstrap:alpine --config bootstrap/test.yaml --config bootstrap/alpine/test.yaml' - 'docker push webdevops/bootstrap:alpine' @@ -51,10 +51,10 @@ stages: - 'cd docker/bootstrap/ubuntu-22.04' - 'docker build --no-cache -t webdevops/bootstrap:ubuntu-22.04 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/bootstrap:ubuntu-22.04" >> Dockerfile_67b33780214e35.25363639' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780214e35.25363639' + - 'echo "FROM webdevops/bootstrap:ubuntu-22.04" >> Dockerfile_69287be80a1fd9.42714191' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1fd9.42714191' - 'bundle install' - - 'bash serverspec.sh spec/docker/bootstrap_spec.rb webdevops/bootstrap:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jvb3RzdHJhcDp1YnVudHUtMjIuMDQiLCJET0NLRVJfVEFHIjoidWJ1bnR1LTIyLjA0IiwiT1NfRkFNSUxZIjoidWJ1bnR1IiwiT1NfVkVSU0lPTiI6IjIyLjA0IiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMTRlMzUuMjUzNjM2MzkifQ== Dockerfile_67b33780214e35.25363639' + - 'bash serverspec.sh spec/docker/bootstrap_spec.rb webdevops/bootstrap:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jvb3RzdHJhcDp1YnVudHUtMjIuMDQiLCJET0NLRVJfVEFHIjoidWJ1bnR1LTIyLjA0IiwiT1NfRkFNSUxZIjoidWJ1bnR1IiwiT1NfVkVSU0lPTiI6IjIyLjA0IiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwYTFmZDkuNDI3MTQxOTEifQ== Dockerfile_69287be80a1fd9.42714191' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/bootstrap:ubuntu-22.04 --config bootstrap/test.yaml' - 'docker push webdevops/bootstrap:ubuntu-22.04' @@ -76,10 +76,10 @@ stages: - 'cd docker/php-official/8.1' - 'docker build --no-cache -t webdevops/php:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.1" >> Dockerfile_67b3378024f8d2.27347713' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378024f8d2.27347713' + - 'echo "FROM webdevops/php:8.1" >> Dockerfile_69287be80857d1.86702937' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80857d1.86702937' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjEiLCJET0NLRVJfVEFHIjoiOC4xIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjRmOGQyLjI3MzQ3NzEzIn0= Dockerfile_67b3378024f8d2.27347713' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjEiLCJET0NLRVJfVEFHIjoiOC4xIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDg1N2QxLjg2NzAyOTM3In0= Dockerfile_69287be80857d1.86702937' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.1 --config php/test.yaml' - 'docker push webdevops/php:8.1' @@ -101,10 +101,10 @@ stages: - 'cd docker/php-official/8.1-alpine' - 'docker build --no-cache -t webdevops/php:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.1-alpine" >> Dockerfile_67b3378023dc34.89923799' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023dc34.89923799' + - 'echo "FROM webdevops/php:8.1-alpine" >> Dockerfile_69287be809c8c1.98352639' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809c8c1.98352639' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjEtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIzZGMzNC44OTkyMzc5OSJ9 Dockerfile_67b3378023dc34.89923799' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjEtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5YzhjMS45ODM1MjYzOSJ9 Dockerfile_69287be809c8c1.98352639' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.1-alpine --config php/test.yaml' - 'docker push webdevops/php:8.1-alpine' @@ -126,10 +126,10 @@ stages: - 'cd docker/php-official/8.2' - 'docker build --no-cache -t webdevops/php:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.2" >> Dockerfile_67b33780224305.94882603' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780224305.94882603' + - 'echo "FROM webdevops/php:8.2" >> Dockerfile_69287be8095ea5.80219908' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8095ea5.80219908' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjIiLCJET0NLRVJfVEFHIjoiOC4yIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjI0MzA1Ljk0ODgyNjAzIn0= Dockerfile_67b33780224305.94882603' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjIiLCJET0NLRVJfVEFHIjoiOC4yIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDk1ZWE1LjgwMjE5OTA4In0= Dockerfile_69287be8095ea5.80219908' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.2 --config php/test.yaml' - 'docker push webdevops/php:8.2' @@ -151,10 +151,10 @@ stages: - 'cd docker/php-official/8.2-alpine' - 'docker build --no-cache -t webdevops/php:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.2-alpine" >> Dockerfile_67b3378022db19.74137044' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022db19.74137044' + - 'echo "FROM webdevops/php:8.2-alpine" >> Dockerfile_69287be808fcf5.62609062' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808fcf5.62609062' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjItYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMi1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyZGIxOS43NDEzNzA0NCJ9 Dockerfile_67b3378022db19.74137044' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjItYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMi1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4ZmNmNS42MjYwOTA2MiJ9 Dockerfile_69287be808fcf5.62609062' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.2-alpine --config php/test.yaml' - 'docker push webdevops/php:8.2-alpine' @@ -176,10 +176,10 @@ stages: - 'cd docker/php-official/8.3' - 'docker build --no-cache -t webdevops/php:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.3" >> Dockerfile_67b33780226889.37238216' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780226889.37238216' + - 'echo "FROM webdevops/php:8.3" >> Dockerfile_69287be809ec52.80068095' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809ec52.80068095' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjMiLCJET0NLRVJfVEFHIjoiOC4zIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjI2ODg5LjM3MjM4MjE2In0= Dockerfile_67b33780226889.37238216' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjMiLCJET0NLRVJfVEFHIjoiOC4zIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDllYzUyLjgwMDY4MDk1In0= Dockerfile_69287be809ec52.80068095' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.3 --config php/test.yaml' - 'docker push webdevops/php:8.3' @@ -201,10 +201,10 @@ stages: - 'cd docker/php-official/8.3-alpine' - 'docker build --no-cache -t webdevops/php:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.3-alpine" >> Dockerfile_67b33780222417.04342489' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780222417.04342489' + - 'echo "FROM webdevops/php:8.3-alpine" >> Dockerfile_69287be8087197.84499594' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8087197.84499594' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjMtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMy1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyMjQxNy4wNDM0MjQ4OSJ9 Dockerfile_67b33780222417.04342489' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjMtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMy1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4NzE5Ny44NDQ5OTU5NCJ9 Dockerfile_69287be8087197.84499594' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.3-alpine --config php/test.yaml' - 'docker push webdevops/php:8.3-alpine' @@ -226,10 +226,10 @@ stages: - 'cd docker/php-official/8.4' - 'docker build --no-cache -t webdevops/php:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.4" >> Dockerfile_67b33780240537.39972307' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780240537.39972307' + - 'echo "FROM webdevops/php:8.4" >> Dockerfile_69287be809a362.88889011' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809a362.88889011' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjQiLCJET0NLRVJfVEFHIjoiOC40IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjQwNTM3LjM5OTcyMzA3In0= Dockerfile_67b33780240537.39972307' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjQiLCJET0NLRVJfVEFHIjoiOC40IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDlhMzYyLjg4ODg5MDExIn0= Dockerfile_69287be809a362.88889011' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.4 --config php/test.yaml' - 'docker push webdevops/php:8.4' @@ -251,10 +251,10 @@ stages: - 'cd docker/php-official/8.4-alpine' - 'docker build --no-cache -t webdevops/php:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php:8.4-alpine" >> Dockerfile_67b33780220d09.67839072' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780220d09.67839072' + - 'echo "FROM webdevops/php:8.4-alpine" >> Dockerfile_69287be8091162.95273204' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8091162.95273204' - 'bundle install' - - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjQtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNC1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyMGQwOS42NzgzOTA3MiJ9 Dockerfile_67b33780220d09.67839072' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjQtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNC1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5MTE2Mi45NTI3MzIwNCJ9 Dockerfile_69287be8091162.95273204' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php:8.4-alpine --config php/test.yaml' - 'docker push webdevops/php:8.4-alpine' @@ -266,6 +266,56 @@ stages: - aws needs: - 'webdevops/toolbox:latest' +'webdevops/php:8.5': + stage: level2 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-official/8.5' + - 'docker build --no-cache -t webdevops/php:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php:8.5" >> Dockerfile_69287be808d961.29259230' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808d961.29259230' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjUiLCJET0NLRVJfVEFHIjoiOC41IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDhkOTYxLjI5MjU5MjMwIn0= Dockerfile_69287be808d961.29259230' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php:8.5 --config php/test.yaml' + - 'docker push webdevops/php:8.5' + - 'docker tag webdevops/php:8.5 $CI_REGISTRY_IMAGE/php:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php:8.5' + - 'docker tag webdevops/php:8.5 webdevops/php-official:8.5' + - 'docker push webdevops/php-official:8.5' + tags: + - aws + needs: + - 'webdevops/toolbox:latest' +'webdevops/php:8.5-alpine': + stage: level2 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-official/8.5-alpine' + - 'docker build --no-cache -t webdevops/php:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php:8.5-alpine" >> Dockerfile_69287be809da51.55661187' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809da51.55661187' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php_spec.rb webdevops/php:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1vZmZpY2lhbDo4LjUtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZGE1MS41NTY2MTE4NyJ9 Dockerfile_69287be809da51.55661187' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php:8.5-alpine --config php/test.yaml' + - 'docker push webdevops/php:8.5-alpine' + - 'docker tag webdevops/php:8.5-alpine $CI_REGISTRY_IMAGE/php:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php:8.5-alpine' + - 'docker tag webdevops/php:8.5-alpine webdevops/php-official:8.5-alpine' + - 'docker push webdevops/php-official:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/toolbox:latest' 'webdevops/storage:latest': stage: level2 before_script: @@ -292,10 +342,10 @@ stages: - 'cd docker/base/alpine' - 'docker build --no-cache -t webdevops/base:alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/base:alpine" >> Dockerfile_67b33780216ee1.41883577' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780216ee1.41883577' + - 'echo "FROM webdevops/base:alpine" >> Dockerfile_69287be80a1420.37249045' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1420.37249045' - 'bundle install' - - 'bash serverspec.sh spec/docker/base_spec.rb webdevops/base:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2U6YWxwaW5lIiwiRE9DS0VSX1RBRyI6ImFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIxNmVlMS40MTg4MzU3NyJ9 Dockerfile_67b33780216ee1.41883577' + - 'bash serverspec.sh spec/docker/base_spec.rb webdevops/base:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2U6YWxwaW5lIiwiRE9DS0VSX1RBRyI6ImFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODBhMTQyMC4zNzI0OTA0NSJ9 Dockerfile_69287be80a1420.37249045' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/base:alpine --config base/test.yaml --config base/alpine/test.yaml' - 'docker push webdevops/base:alpine' @@ -315,10 +365,10 @@ stages: - 'cd docker/base/ubuntu-22.04' - 'docker build --no-cache -t webdevops/base:ubuntu-22.04 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/base:ubuntu-22.04" >> Dockerfile_67b33780215452.09106799' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780215452.09106799' + - 'echo "FROM webdevops/base:ubuntu-22.04" >> Dockerfile_69287be80a2271.41603408' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a2271.41603408' - 'bundle install' - - 'bash serverspec.sh spec/docker/base_spec.rb webdevops/base:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2U6dWJ1bnR1LTIyLjA0IiwiRE9DS0VSX1RBRyI6InVidW50dS0yMi4wNCIsIk9TX0ZBTUlMWSI6InVidW50dSIsIk9TX1ZFUlNJT04iOiIyMi4wNCIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjE1NDUyLjA5MTA2Nzk5In0= Dockerfile_67b33780215452.09106799' + - 'bash serverspec.sh spec/docker/base_spec.rb webdevops/base:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2U6dWJ1bnR1LTIyLjA0IiwiRE9DS0VSX1RBRyI6InVidW50dS0yMi4wNCIsIk9TX0ZBTUlMWSI6InVidW50dSIsIk9TX1ZFUlNJT04iOiIyMi4wNCIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MGEyMjcxLjQxNjAzNDA4In0= Dockerfile_69287be80a2271.41603408' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/base:ubuntu-22.04 --config base/test.yaml' - 'docker push webdevops/base:ubuntu-22.04' @@ -340,10 +390,10 @@ stages: - 'cd docker/php-apache/8.1' - 'docker build --no-cache -t webdevops/php-apache:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.1" >> Dockerfile_67b33780250782.57437894' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780250782.57437894' + - 'echo "FROM webdevops/php-apache:8.1" >> Dockerfile_69287be8086040.55246786' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8086040.55246786' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI1MDc4Mi41NzQzNzg5NCJ9 Dockerfile_67b33780250782.57437894' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4NjA0MC41NTI0Njc4NiJ9 Dockerfile_69287be8086040.55246786' - 'docker push webdevops/php-apache:8.1' - 'docker tag webdevops/php-apache:8.1 $CI_REGISTRY_IMAGE/php-apache:8.1' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.1' @@ -361,10 +411,10 @@ stages: - 'cd docker/php-apache/8.1-alpine' - 'docker build --no-cache -t webdevops/php-apache:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.1-alpine" >> Dockerfile_67b3378023efa2.31447016' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023efa2.31447016' + - 'echo "FROM webdevops/php-apache:8.1-alpine" >> Dockerfile_69287be809cc84.38539116' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809cc84.38539116' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyM2VmYTIuMzE0NDcwMTYifQ== Dockerfile_67b3378023efa2.31447016' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWNjODQuMzg1MzkxMTYifQ== Dockerfile_69287be809cc84.38539116' - 'docker push webdevops/php-apache:8.1-alpine' - 'docker tag webdevops/php-apache:8.1-alpine $CI_REGISTRY_IMAGE/php-apache:8.1-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.1-alpine' @@ -382,10 +432,10 @@ stages: - 'cd docker/php-apache/8.2' - 'docker build --no-cache -t webdevops/php-apache:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.2" >> Dockerfile_67b33780224f36.01642941' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780224f36.01642941' + - 'echo "FROM webdevops/php-apache:8.2" >> Dockerfile_69287be8096356.83522689' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8096356.83522689' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyNGYzNi4wMTY0Mjk0MSJ9 Dockerfile_67b33780224f36.01642941' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5NjM1Ni44MzUyMjY4OSJ9 Dockerfile_69287be8096356.83522689' - 'docker push webdevops/php-apache:8.2' - 'docker tag webdevops/php-apache:8.2 $CI_REGISTRY_IMAGE/php-apache:8.2' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.2' @@ -403,10 +453,10 @@ stages: - 'cd docker/php-apache/8.2-alpine' - 'docker build --no-cache -t webdevops/php-apache:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.2-alpine" >> Dockerfile_67b3378022e321.36917823' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022e321.36917823' + - 'echo "FROM webdevops/php-apache:8.2-alpine" >> Dockerfile_69287be80902c8.44617894' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80902c8.44617894' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMmUzMjEuMzY5MTc4MjMifQ== Dockerfile_67b3378022e321.36917823' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTAyYzguNDQ2MTc4OTQifQ== Dockerfile_69287be80902c8.44617894' - 'docker push webdevops/php-apache:8.2-alpine' - 'docker tag webdevops/php-apache:8.2-alpine $CI_REGISTRY_IMAGE/php-apache:8.2-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.2-alpine' @@ -424,10 +474,10 @@ stages: - 'cd docker/php-apache/8.3' - 'docker build --no-cache -t webdevops/php-apache:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.3" >> Dockerfile_67b33780227951.29831764' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780227951.29831764' + - 'echo "FROM webdevops/php-apache:8.3" >> Dockerfile_69287be809ef34.66930314' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809ef34.66930314' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyNzk1MS4yOTgzMTc2NCJ9 Dockerfile_67b33780227951.29831764' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZWYzNC42NjkzMDMxNCJ9 Dockerfile_69287be809ef34.66930314' - 'docker push webdevops/php-apache:8.3' - 'docker tag webdevops/php-apache:8.3 $CI_REGISTRY_IMAGE/php-apache:8.3' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.3' @@ -445,10 +495,10 @@ stages: - 'cd docker/php-apache/8.3-alpine' - 'docker build --no-cache -t webdevops/php-apache:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.3-alpine" >> Dockerfile_67b33780223057.11549528' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780223057.11549528' + - 'echo "FROM webdevops/php-apache:8.3-alpine" >> Dockerfile_69287be8087379.30688170' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8087379.30688170' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjMwNTcuMTE1NDk1MjgifQ== Dockerfile_67b33780223057.11549528' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwODczNzkuMzA2ODgxNzAifQ== Dockerfile_69287be8087379.30688170' - 'docker push webdevops/php-apache:8.3-alpine' - 'docker tag webdevops/php-apache:8.3-alpine $CI_REGISTRY_IMAGE/php-apache:8.3-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.3-alpine' @@ -466,10 +516,10 @@ stages: - 'cd docker/php-apache/8.4' - 'docker build --no-cache -t webdevops/php-apache:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.4" >> Dockerfile_67b33780241669.66363972' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780241669.66363972' + - 'echo "FROM webdevops/php-apache:8.4" >> Dockerfile_69287be809a659.15912536' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809a659.15912536' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI0MTY2OS42NjM2Mzk3MiJ9 Dockerfile_67b33780241669.66363972' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5YTY1OS4xNTkxMjUzNiJ9 Dockerfile_69287be809a659.15912536' - 'docker push webdevops/php-apache:8.4' - 'docker tag webdevops/php-apache:8.4 $CI_REGISTRY_IMAGE/php-apache:8.4' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.4' @@ -487,10 +537,10 @@ stages: - 'cd docker/php-apache/8.4-alpine' - 'docker build --no-cache -t webdevops/php-apache:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache:8.4-alpine" >> Dockerfile_67b33780221375.80839496' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780221375.80839496' + - 'echo "FROM webdevops/php-apache:8.4-alpine" >> Dockerfile_69287be8091443.98815882' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8091443.98815882' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjEzNzUuODA4Mzk0OTYifQ== Dockerfile_67b33780221375.80839496' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTE0NDMuOTg4MTU4ODIifQ== Dockerfile_69287be8091443.98815882' - 'docker push webdevops/php-apache:8.4-alpine' - 'docker tag webdevops/php-apache:8.4-alpine $CI_REGISTRY_IMAGE/php-apache:8.4-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.4-alpine' @@ -498,6 +548,48 @@ stages: - aws needs: - 'webdevops/php:8.4-alpine' +'webdevops/php-apache:8.5': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-apache/8.5' + - 'docker build --no-cache -t webdevops/php-apache:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-apache:8.5" >> Dockerfile_69287be808dde1.87460582' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808dde1.87460582' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC41IiwiRE9DS0VSX1RBRyI6IjguNSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4ZGRlMS44NzQ2MDU4MiJ9 Dockerfile_69287be808dde1.87460582' + - 'docker push webdevops/php-apache:8.5' + - 'docker tag webdevops/php-apache:8.5 $CI_REGISTRY_IMAGE/php-apache:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.5' + tags: + - aws + needs: + - 'webdevops/php:8.5' +'webdevops/php-apache:8.5-alpine': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-apache/8.5-alpine' + - 'docker build --no-cache -t webdevops/php-apache:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-apache:8.5-alpine" >> Dockerfile_69287be809de48.62884443' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809de48.62884443' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-apache_spec.rb webdevops/php-apache:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGU6OC41LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjUtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWRlNDguNjI4ODQ0NDMifQ== Dockerfile_69287be809de48.62884443' + - 'docker push webdevops/php-apache:8.5-alpine' + - 'docker tag webdevops/php-apache:8.5-alpine $CI_REGISTRY_IMAGE/php-apache:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php-apache:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/php:8.5-alpine' 'webdevops/php-dev:8.1': stage: level3 before_script: @@ -508,10 +600,10 @@ stages: - 'cd docker/php-dev/8.1' - 'docker build --no-cache -t webdevops/php-dev:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.1" >> Dockerfile_67b33780250158.76524197' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780250158.76524197' + - 'echo "FROM webdevops/php-dev:8.1" >> Dockerfile_69287be80865b8.08882691' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80865b8.08882691' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI1MDE1OC43NjUyNDE5NyJ9 Dockerfile_67b33780250158.76524197' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4NjViOC4wODg4MjY5MSJ9 Dockerfile_69287be80865b8.08882691' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.1 --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.1' @@ -531,10 +623,10 @@ stages: - 'cd docker/php-dev/8.1-alpine' - 'docker build --no-cache -t webdevops/php-dev:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.1-alpine" >> Dockerfile_67b3378023e319.33479644' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023e319.33479644' + - 'echo "FROM webdevops/php-dev:8.1-alpine" >> Dockerfile_69287be809d249.39633466' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809d249.39633466' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyM2UzMTkuMzM0Nzk2NDQifQ== Dockerfile_67b3378023e319.33479644' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWQyNDkuMzk2MzM0NjYifQ== Dockerfile_69287be809d249.39633466' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.1-alpine --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.1-alpine' @@ -554,10 +646,10 @@ stages: - 'cd docker/php-dev/8.2' - 'docker build --no-cache -t webdevops/php-dev:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.2" >> Dockerfile_67b33780224b49.67003782' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780224b49.67003782' + - 'echo "FROM webdevops/php-dev:8.2" >> Dockerfile_69287be8096a14.11893350' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8096a14.11893350' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyNGI0OS42NzAwMzc4MiJ9 Dockerfile_67b33780224b49.67003782' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5NmExNC4xMTg5MzM1MCJ9 Dockerfile_69287be8096a14.11893350' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.2 --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.2' @@ -577,10 +669,10 @@ stages: - 'cd docker/php-dev/8.2-alpine' - 'docker build --no-cache -t webdevops/php-dev:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.2-alpine" >> Dockerfile_67b3378022ddd1.71440200' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022ddd1.71440200' + - 'echo "FROM webdevops/php-dev:8.2-alpine" >> Dockerfile_69287be8090975.75273771' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8090975.75273771' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMmRkZDEuNzE0NDAyMDAifQ== Dockerfile_67b3378022ddd1.71440200' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTA5NzUuNzUyNzM3NzEifQ== Dockerfile_69287be8090975.75273771' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.2-alpine --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.2-alpine' @@ -600,10 +692,10 @@ stages: - 'cd docker/php-dev/8.3' - 'docker build --no-cache -t webdevops/php-dev:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.3" >> Dockerfile_67b337802273f4.20899500' - - 'echo "COPY conf/ /" >> Dockerfile_67b337802273f4.20899500' + - 'echo "FROM webdevops/php-dev:8.3" >> Dockerfile_69287be809f618.46491550' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809f618.46491550' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyNzNmNC4yMDg5OTUwMCJ9 Dockerfile_67b337802273f4.20899500' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZjYxOC40NjQ5MTU1MCJ9 Dockerfile_69287be809f618.46491550' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.3 --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.3' @@ -623,10 +715,10 @@ stages: - 'cd docker/php-dev/8.3-alpine' - 'docker build --no-cache -t webdevops/php-dev:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.3-alpine" >> Dockerfile_67b33780222898.27776469' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780222898.27776469' + - 'echo "FROM webdevops/php-dev:8.3-alpine" >> Dockerfile_69287be80879b7.76968640' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80879b7.76968640' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjI4OTguMjc3NzY0NjkifQ== Dockerfile_67b33780222898.27776469' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwODc5YjcuNzY5Njg2NDAifQ== Dockerfile_69287be80879b7.76968640' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.3-alpine --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.3-alpine' @@ -646,10 +738,10 @@ stages: - 'cd docker/php-dev/8.4' - 'docker build --no-cache -t webdevops/php-dev:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.4" >> Dockerfile_67b33780240cd3.25453164' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780240cd3.25453164' + - 'echo "FROM webdevops/php-dev:8.4" >> Dockerfile_69287be809acc7.13310467' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809acc7.13310467' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI0MGNkMy4yNTQ1MzE2NCJ9 Dockerfile_67b33780240cd3.25453164' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5YWNjNy4xMzMxMDQ2NyJ9 Dockerfile_69287be809acc7.13310467' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.4 --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.4' @@ -669,10 +761,10 @@ stages: - 'cd docker/php-dev/8.4-alpine' - 'docker build --no-cache -t webdevops/php-dev:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-dev:8.4-alpine" >> Dockerfile_67b33780221096.32273434' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780221096.32273434' + - 'echo "FROM webdevops/php-dev:8.4-alpine" >> Dockerfile_69287be8091917.39182480' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8091917.39182480' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjEwOTYuMzIyNzM0MzQifQ== Dockerfile_67b33780221096.32273434' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTE5MTcuMzkxODI0ODAifQ== Dockerfile_69287be8091917.39182480' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.4-alpine --config php-dev/test.yaml' - 'docker push webdevops/php-dev:8.4-alpine' @@ -682,6 +774,52 @@ stages: - aws needs: - 'webdevops/php:8.4-alpine' +'webdevops/php-dev:8.5': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-dev/8.5' + - 'docker build --no-cache -t webdevops/php-dev:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-dev:8.5" >> Dockerfile_69287be808e412.80583875' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808e412.80583875' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC41IiwiRE9DS0VSX1RBRyI6IjguNSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4ZTQxMi44MDU4Mzg3NSJ9 Dockerfile_69287be808e412.80583875' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.5 --config php-dev/test.yaml' + - 'docker push webdevops/php-dev:8.5' + - 'docker tag webdevops/php-dev:8.5 $CI_REGISTRY_IMAGE/php-dev:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php-dev:8.5' + tags: + - aws + needs: + - 'webdevops/php:8.5' +'webdevops/php-dev:8.5-alpine': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-dev/8.5-alpine' + - 'docker build --no-cache -t webdevops/php-dev:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-dev:8.5-alpine" >> Dockerfile_69287be809e491.90391978' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809e491.90391978' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-dev_spec.rb webdevops/php-dev:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1kZXY6OC41LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjUtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWU0OTEuOTAzOTE5NzgifQ== Dockerfile_69287be809e491.90391978' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php-dev:8.5-alpine --config php-dev/test.yaml' + - 'docker push webdevops/php-dev:8.5-alpine' + - 'docker tag webdevops/php-dev:8.5-alpine $CI_REGISTRY_IMAGE/php-dev:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php-dev:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/php:8.5-alpine' 'webdevops/php-nginx:8.1': stage: level3 before_script: @@ -692,10 +830,10 @@ stages: - 'cd docker/php-nginx/8.1' - 'docker build --no-cache -t webdevops/php-nginx:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.1" >> Dockerfile_67b33780251289.29081473' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780251289.29081473' + - 'echo "FROM webdevops/php-nginx:8.1" >> Dockerfile_69287be8086ae7.34611114' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8086ae7.34611114' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjEiLCJET0NLRVJfVEFHIjoiOC4xIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjUxMjg5LjI5MDgxNDczIn0= Dockerfile_67b33780251289.29081473' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjEiLCJET0NLRVJfVEFHIjoiOC4xIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDg2YWU3LjM0NjExMTE0In0= Dockerfile_69287be8086ae7.34611114' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.1 --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.1' @@ -715,10 +853,10 @@ stages: - 'cd docker/php-nginx/8.1-alpine' - 'docker build --no-cache -t webdevops/php-nginx:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.1-alpine" >> Dockerfile_67b3378023f6b7.58331226' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023f6b7.58331226' + - 'echo "FROM webdevops/php-nginx:8.1-alpine" >> Dockerfile_69287be809d400.62365738' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809d400.62365738' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjEtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIzZjZiNy41ODMzMTIyNiJ9 Dockerfile_67b3378023f6b7.58331226' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjEtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZDQwMC42MjM2NTczOCJ9 Dockerfile_69287be809d400.62365738' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.1-alpine --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.1-alpine' @@ -738,10 +876,10 @@ stages: - 'cd docker/php-nginx/8.2' - 'docker build --no-cache -t webdevops/php-nginx:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.2" >> Dockerfile_67b33780225875.98479028' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780225875.98479028' + - 'echo "FROM webdevops/php-nginx:8.2" >> Dockerfile_69287be8096be5.07623118' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8096be5.07623118' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjIiLCJET0NLRVJfVEFHIjoiOC4yIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjI1ODc1Ljk4NDc5MDI4In0= Dockerfile_67b33780225875.98479028' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjIiLCJET0NLRVJfVEFHIjoiOC4yIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDk2YmU1LjA3NjIzMTE4In0= Dockerfile_69287be8096be5.07623118' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.2 --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.2' @@ -761,10 +899,10 @@ stages: - 'cd docker/php-nginx/8.2-alpine' - 'docker build --no-cache -t webdevops/php-nginx:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.2-alpine" >> Dockerfile_67b3378022eb39.08525303' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022eb39.08525303' + - 'echo "FROM webdevops/php-nginx:8.2-alpine" >> Dockerfile_69287be8090af2.51704423' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8090af2.51704423' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjItYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMi1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyZWIzOS4wODUyNTMwMyJ9 Dockerfile_67b3378022eb39.08525303' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjItYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMi1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5MGFmMi41MTcwNDQyMyJ9 Dockerfile_69287be8090af2.51704423' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.2-alpine --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.2-alpine' @@ -784,10 +922,10 @@ stages: - 'cd docker/php-nginx/8.3' - 'docker build --no-cache -t webdevops/php-nginx:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.3" >> Dockerfile_67b33780228964.55110588' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780228964.55110588' + - 'echo "FROM webdevops/php-nginx:8.3" >> Dockerfile_69287be809f952.98817264' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809f952.98817264' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjMiLCJET0NLRVJfVEFHIjoiOC4zIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjI4OTY0LjU1MTEwNTg4In0= Dockerfile_67b33780228964.55110588' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjMiLCJET0NLRVJfVEFHIjoiOC4zIiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDlmOTUyLjk4ODE3MjY0In0= Dockerfile_69287be809f952.98817264' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.3 --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.3' @@ -807,10 +945,10 @@ stages: - 'cd docker/php-nginx/8.3-alpine' - 'docker build --no-cache -t webdevops/php-nginx:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.3-alpine" >> Dockerfile_67b33780223ba0.87435473' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780223ba0.87435473' + - 'echo "FROM webdevops/php-nginx:8.3-alpine" >> Dockerfile_69287be8087c69.73059488' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8087c69.73059488' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjMtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMy1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyM2JhMC44NzQzNTQ3MyJ9 Dockerfile_67b33780223ba0.87435473' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjMtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguMy1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4N2M2OS43MzA1OTQ4OCJ9 Dockerfile_69287be8087c69.73059488' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.3-alpine --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.3-alpine' @@ -830,10 +968,10 @@ stages: - 'cd docker/php-nginx/8.4' - 'docker build --no-cache -t webdevops/php-nginx:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.4" >> Dockerfile_67b33780242328.62344667' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780242328.62344667' + - 'echo "FROM webdevops/php-nginx:8.4" >> Dockerfile_69287be809b0e3.29753497' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809b0e3.29753497' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjQiLCJET0NLRVJfVEFHIjoiOC40IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjQyMzI4LjYyMzQ0NjY3In0= Dockerfile_67b33780242328.62344667' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjQiLCJET0NLRVJfVEFHIjoiOC40IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDliMGUzLjI5NzUzNDk3In0= Dockerfile_69287be809b0e3.29753497' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.4 --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.4' @@ -853,10 +991,10 @@ stages: - 'cd docker/php-nginx/8.4-alpine' - 'docker build --no-cache -t webdevops/php-nginx:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx:8.4-alpine" >> Dockerfile_67b337802218e8.90240500' - - 'echo "COPY conf/ /" >> Dockerfile_67b337802218e8.90240500' + - 'echo "FROM webdevops/php-nginx:8.4-alpine" >> Dockerfile_69287be8091e12.87659676' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8091e12.87659676' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjQtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNC1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyMThlOC45MDI0MDUwMCJ9 Dockerfile_67b337802218e8.90240500' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjQtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNC1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5MWUxMi44NzY1OTY3NiJ9 Dockerfile_69287be8091e12.87659676' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.4-alpine --config php-nginx/test.yaml' - 'docker push webdevops/php-nginx:8.4-alpine' @@ -866,6 +1004,52 @@ stages: - aws needs: - 'webdevops/php:8.4-alpine' +'webdevops/php-nginx:8.5': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-nginx/8.5' + - 'docker build --no-cache -t webdevops/php-nginx:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-nginx:8.5" >> Dockerfile_69287be808e5c3.13098686' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808e5c3.13098686' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjUiLCJET0NLRVJfVEFHIjoiOC41IiwiT1NfRkFNSUxZIjoiZGViaWFuIiwiT1NfVkVSU0lPTiI6IjEyIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDhlNWMzLjEzMDk4Njg2In0= Dockerfile_69287be808e5c3.13098686' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.5 --config php-nginx/test.yaml' + - 'docker push webdevops/php-nginx:8.5' + - 'docker tag webdevops/php-nginx:8.5 $CI_REGISTRY_IMAGE/php-nginx:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php-nginx:8.5' + tags: + - aws + needs: + - 'webdevops/php:8.5' +'webdevops/php-nginx:8.5-alpine': + stage: level3 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-nginx/8.5-alpine' + - 'docker build --no-cache -t webdevops/php-nginx:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-nginx:8.5-alpine" >> Dockerfile_69287be809e644.29403101' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809e644.29403101' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-nginx_spec.rb webdevops/php-nginx:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueDo4LjUtYWxwaW5lIiwiRE9DS0VSX1RBRyI6IjguNS1hbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiMyIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZTY0NC4yOTQwMzEwMSJ9 Dockerfile_69287be809e644.29403101' + - 'cd $CI_PROJECT_DIR/tests/structure-test' + - '/usr/local/bin/container-structure-test test --image webdevops/php-nginx:8.5-alpine --config php-nginx/test.yaml' + - 'docker push webdevops/php-nginx:8.5-alpine' + - 'docker tag webdevops/php-nginx:8.5-alpine $CI_REGISTRY_IMAGE/php-nginx:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php-nginx:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/php:8.5-alpine' 'webdevops/apache:alpine': stage: level4 before_script: @@ -876,10 +1060,10 @@ stages: - 'cd docker/apache/alpine' - 'docker build --no-cache -t webdevops/apache:alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/apache:alpine" >> Dockerfile_67b33780217d18.60871477' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780217d18.60871477' + - 'echo "FROM webdevops/apache:alpine" >> Dockerfile_69287be80a1720.16252575' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1720.16252575' - 'bundle install' - - 'bash serverspec.sh spec/docker/apache_spec.rb webdevops/apache:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2FwYWNoZTphbHBpbmUiLCJET0NLRVJfVEFHIjoiYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IiIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjE3ZDE4LjYwODcxNDc3In0= Dockerfile_67b33780217d18.60871477' + - 'bash serverspec.sh spec/docker/apache_spec.rb webdevops/apache:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2FwYWNoZTphbHBpbmUiLCJET0NLRVJfVEFHIjoiYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IiIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MGExNzIwLjE2MjUyNTc1In0= Dockerfile_69287be80a1720.16252575' - 'docker push webdevops/apache:alpine' - 'docker tag webdevops/apache:alpine $CI_REGISTRY_IMAGE/apache:alpine' - 'docker push $CI_REGISTRY_IMAGE/apache:alpine' @@ -897,10 +1081,10 @@ stages: - 'cd docker/base-app/alpine' - 'docker build --no-cache -t webdevops/base-app:alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/base-app:alpine" >> Dockerfile_67b337802174b9.60734934' - - 'echo "COPY conf/ /" >> Dockerfile_67b337802174b9.60734934' + - 'echo "FROM webdevops/base-app:alpine" >> Dockerfile_69287be80a1cc7.66504182' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1cc7.66504182' - 'bundle install' - - 'bash serverspec.sh spec/docker/base-app_spec.rb webdevops/base-app:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2UtYXBwOmFscGluZSIsIkRPQ0tFUl9UQUciOiJhbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMTc0YjkuNjA3MzQ5MzQifQ== Dockerfile_67b337802174b9.60734934' + - 'bash serverspec.sh spec/docker/base-app_spec.rb webdevops/base-app:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2UtYXBwOmFscGluZSIsIkRPQ0tFUl9UQUciOiJhbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwYTFjYzcuNjY1MDQxODIifQ== Dockerfile_69287be80a1cc7.66504182' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/base-app:alpine --config base-app/test.yaml --config base-app/alpine/test.yaml' - 'docker push webdevops/base-app:alpine' @@ -920,10 +1104,10 @@ stages: - 'cd docker/base-app/ubuntu-22.04' - 'docker build --no-cache -t webdevops/base-app:ubuntu-22.04 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/base-app:ubuntu-22.04" >> Dockerfile_67b33780215755.05460809' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780215755.05460809' + - 'echo "FROM webdevops/base-app:ubuntu-22.04" >> Dockerfile_69287be80a28a2.22679327' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a28a2.22679327' - 'bundle install' - - 'bash serverspec.sh spec/docker/base-app_spec.rb webdevops/base-app:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2UtYXBwOnVidW50dS0yMi4wNCIsIkRPQ0tFUl9UQUciOiJ1YnVudHUtMjIuMDQiLCJPU19GQU1JTFkiOiJ1YnVudHUiLCJPU19WRVJTSU9OIjoiMjIuMDQiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIxNTc1NS4wNTQ2MDgwOSJ9 Dockerfile_67b33780215755.05460809' + - 'bash serverspec.sh spec/docker/base-app_spec.rb webdevops/base-app:ubuntu-22.04 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL2Jhc2UtYXBwOnVidW50dS0yMi4wNCIsIkRPQ0tFUl9UQUciOiJ1YnVudHUtMjIuMDQiLCJPU19GQU1JTFkiOiJ1YnVudHUiLCJPU19WRVJTSU9OIjoiMjIuMDQiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODBhMjhhMi4yMjY3OTMyNyJ9 Dockerfile_69287be80a28a2.22679327' - 'cd $CI_PROJECT_DIR/tests/structure-test' - '/usr/local/bin/container-structure-test test --image webdevops/base-app:ubuntu-22.04 --config base-app/test.yaml' - 'docker push webdevops/base-app:ubuntu-22.04' @@ -945,10 +1129,10 @@ stages: - 'cd docker/nginx/alpine' - 'docker build --no-cache -t webdevops/nginx:alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/nginx:alpine" >> Dockerfile_67b33780217a03.35196981' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780217a03.35196981' + - 'echo "FROM webdevops/nginx:alpine" >> Dockerfile_69287be80a1959.99222454' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a1959.99222454' - 'bundle install' - - 'bash serverspec.sh spec/docker/nginx_spec.rb webdevops/nginx:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL25naW54OmFscGluZSIsIkRPQ0tFUl9UQUciOiJhbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMTdhMDMuMzUxOTY5ODEifQ== Dockerfile_67b33780217a03.35196981' + - 'bash serverspec.sh spec/docker/nginx_spec.rb webdevops/nginx:alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL25naW54OmFscGluZSIsIkRPQ0tFUl9UQUciOiJhbHBpbmUiLCJPU19GQU1JTFkiOiJhbHBpbmUiLCJPU19WRVJTSU9OIjoiIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwYTE5NTkuOTkyMjI0NTQifQ== Dockerfile_69287be80a1959.99222454' - 'docker push webdevops/nginx:alpine' - 'docker tag webdevops/nginx:alpine $CI_REGISTRY_IMAGE/nginx:alpine' - 'docker push $CI_REGISTRY_IMAGE/nginx:alpine' @@ -966,10 +1150,10 @@ stages: - 'cd docker/php-apache-dev/8.1' - 'docker build --no-cache -t webdevops/php-apache-dev:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.1" >> Dockerfile_67b33780250ae3.80578672' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780250ae3.80578672' + - 'echo "FROM webdevops/php-apache-dev:8.1" >> Dockerfile_69287be80862d4.18963874' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80862d4.18963874' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMSIsIkRPQ0tFUl9UQUciOiI4LjEiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyNTBhZTMuODA1Nzg2NzIifQ== Dockerfile_67b33780250ae3.80578672' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMSIsIkRPQ0tFUl9UQUciOiI4LjEiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwODYyZDQuMTg5NjM4NzQifQ== Dockerfile_69287be80862d4.18963874' - 'docker push webdevops/php-apache-dev:8.1' - 'docker tag webdevops/php-apache-dev:8.1 $CI_REGISTRY_IMAGE/php-apache-dev:8.1' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.1' @@ -987,10 +1171,10 @@ stages: - 'cd docker/php-apache-dev/8.1-alpine' - 'docker build --no-cache -t webdevops/php-apache-dev:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.1-alpine" >> Dockerfile_67b3378023f371.12517127' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023f371.12517127' + - 'echo "FROM webdevops/php-apache-dev:8.1-alpine" >> Dockerfile_69287be809cf75.27452479' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809cf75.27452479' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMS1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4xLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjNmMzcxLjEyNTE3MTI3In0= Dockerfile_67b3378023f371.12517127' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMS1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4xLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDljZjc1LjI3NDUyNDc5In0= Dockerfile_69287be809cf75.27452479' - 'docker push webdevops/php-apache-dev:8.1-alpine' - 'docker tag webdevops/php-apache-dev:8.1-alpine $CI_REGISTRY_IMAGE/php-apache-dev:8.1-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.1-alpine' @@ -1008,10 +1192,10 @@ stages: - 'cd docker/php-apache-dev/8.2' - 'docker build --no-cache -t webdevops/php-apache-dev:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.2" >> Dockerfile_67b33780225200.47918817' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780225200.47918817' + - 'echo "FROM webdevops/php-apache-dev:8.2" >> Dockerfile_69287be8096655.26048753' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8096655.26048753' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMiIsIkRPQ0tFUl9UQUciOiI4LjIiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjUyMDAuNDc5MTg4MTcifQ== Dockerfile_67b33780225200.47918817' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMiIsIkRPQ0tFUl9UQUciOiI4LjIiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTY2NTUuMjYwNDg3NTMifQ== Dockerfile_69287be8096655.26048753' - 'docker push webdevops/php-apache-dev:8.2' - 'docker tag webdevops/php-apache-dev:8.2 $CI_REGISTRY_IMAGE/php-apache-dev:8.2' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.2' @@ -1029,10 +1213,10 @@ stages: - 'cd docker/php-apache-dev/8.2-alpine' - 'docker build --no-cache -t webdevops/php-apache-dev:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.2-alpine" >> Dockerfile_67b3378022e691.08109699' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022e691.08109699' + - 'echo "FROM webdevops/php-apache-dev:8.2-alpine" >> Dockerfile_69287be8090744.60854462' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8090744.60854462' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMi1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4yLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjJlNjkxLjA4MTA5Njk5In0= Dockerfile_67b3378022e691.08109699' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMi1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4yLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDkwNzQ0LjYwODU0NDYyIn0= Dockerfile_69287be8090744.60854462' - 'docker push webdevops/php-apache-dev:8.2-alpine' - 'docker tag webdevops/php-apache-dev:8.2-alpine $CI_REGISTRY_IMAGE/php-apache-dev:8.2-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.2-alpine' @@ -1050,10 +1234,10 @@ stages: - 'cd docker/php-apache-dev/8.3' - 'docker build --no-cache -t webdevops/php-apache-dev:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.3" >> Dockerfile_67b33780228158.19260488' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780228158.19260488' + - 'echo "FROM webdevops/php-apache-dev:8.3" >> Dockerfile_69287be809f289.20754057' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809f289.20754057' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMyIsIkRPQ0tFUl9UQUciOiI4LjMiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjgxNTguMTkyNjA0ODgifQ== Dockerfile_67b33780228158.19260488' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMyIsIkRPQ0tFUl9UQUciOiI4LjMiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWYyODkuMjA3NTQwNTcifQ== Dockerfile_69287be809f289.20754057' - 'docker push webdevops/php-apache-dev:8.3' - 'docker tag webdevops/php-apache-dev:8.3 $CI_REGISTRY_IMAGE/php-apache-dev:8.3' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.3' @@ -1071,10 +1255,10 @@ stages: - 'cd docker/php-apache-dev/8.3-alpine' - 'docker build --no-cache -t webdevops/php-apache-dev:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.3-alpine" >> Dockerfile_67b337802235a8.44153401' - - 'echo "COPY conf/ /" >> Dockerfile_67b337802235a8.44153401' + - 'echo "FROM webdevops/php-apache-dev:8.3-alpine" >> Dockerfile_69287be80875e2.53911766' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80875e2.53911766' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMy1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4zLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjIzNWE4LjQ0MTUzNDAxIn0= Dockerfile_67b337802235a8.44153401' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguMy1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC4zLWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDg3NWUyLjUzOTExNzY2In0= Dockerfile_69287be80875e2.53911766' - 'docker push webdevops/php-apache-dev:8.3-alpine' - 'docker tag webdevops/php-apache-dev:8.3-alpine $CI_REGISTRY_IMAGE/php-apache-dev:8.3-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.3-alpine' @@ -1092,10 +1276,10 @@ stages: - 'cd docker/php-apache-dev/8.4' - 'docker build --no-cache -t webdevops/php-apache-dev:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.4" >> Dockerfile_67b33780241c27.57841892' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780241c27.57841892' + - 'echo "FROM webdevops/php-apache-dev:8.4" >> Dockerfile_69287be809aa20.63977001' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809aa20.63977001' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNCIsIkRPQ0tFUl9UQUciOiI4LjQiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyNDFjMjcuNTc4NDE4OTIifQ== Dockerfile_67b33780241c27.57841892' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNCIsIkRPQ0tFUl9UQUciOiI4LjQiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWFhMjAuNjM5NzcwMDEifQ== Dockerfile_69287be809aa20.63977001' - 'docker push webdevops/php-apache-dev:8.4' - 'docker tag webdevops/php-apache-dev:8.4 $CI_REGISTRY_IMAGE/php-apache-dev:8.4' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.4' @@ -1113,10 +1297,10 @@ stages: - 'cd docker/php-apache-dev/8.4-alpine' - 'docker build --no-cache -t webdevops/php-apache-dev:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-apache-dev:8.4-alpine" >> Dockerfile_67b33780221629.96682056' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780221629.96682056' + - 'echo "FROM webdevops/php-apache-dev:8.4-alpine" >> Dockerfile_69287be80915b3.42372894' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80915b3.42372894' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNC1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC40LWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY3YjMzNzgwMjIxNjI5Ljk2NjgyMDU2In0= Dockerfile_67b33780221629.96682056' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNC1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC40LWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDkxNWIzLjQyMzcyODk0In0= Dockerfile_69287be80915b3.42372894' - 'docker push webdevops/php-apache-dev:8.4-alpine' - 'docker tag webdevops/php-apache-dev:8.4-alpine $CI_REGISTRY_IMAGE/php-apache-dev:8.4-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.4-alpine' @@ -1124,6 +1308,48 @@ stages: - aws needs: - 'webdevops/php-apache:8.4-alpine' +'webdevops/php-apache-dev:8.5': + stage: level4 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-apache-dev/8.5' + - 'docker build --no-cache -t webdevops/php-apache-dev:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-apache-dev:8.5" >> Dockerfile_69287be808e0f1.57438701' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808e0f1.57438701' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNSIsIkRPQ0tFUl9UQUciOiI4LjUiLCJPU19GQU1JTFkiOiJkZWJpYW4iLCJPU19WRVJTSU9OIjoiMTIiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOGUwZjEuNTc0Mzg3MDEifQ== Dockerfile_69287be808e0f1.57438701' + - 'docker push webdevops/php-apache-dev:8.5' + - 'docker tag webdevops/php-apache-dev:8.5 $CI_REGISTRY_IMAGE/php-apache-dev:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.5' + tags: + - aws + needs: + - 'webdevops/php-apache:8.5' +'webdevops/php-apache-dev:8.5-alpine': + stage: level4 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-apache-dev/8.5-alpine' + - 'docker build --no-cache -t webdevops/php-apache-dev:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-apache-dev:8.5-alpine" >> Dockerfile_69287be809e134.71960535' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809e134.71960535' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-apache-dev_spec.rb webdevops/php-apache-dev:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1hcGFjaGUtZGV2OjguNS1hbHBpbmUiLCJET0NLRVJfVEFHIjoiOC41LWFscGluZSIsIk9TX0ZBTUlMWSI6ImFscGluZSIsIk9TX1ZFUlNJT04iOiIzIiwiUEhQX09GRklDSUFMIjoiMSIsIkRPQ0tFUkZJTEUiOiJEb2NrZXJmaWxlXzY5Mjg3YmU4MDllMTM0LjcxOTYwNTM1In0= Dockerfile_69287be809e134.71960535' + - 'docker push webdevops/php-apache-dev:8.5-alpine' + - 'docker tag webdevops/php-apache-dev:8.5-alpine $CI_REGISTRY_IMAGE/php-apache-dev:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php-apache-dev:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/php-apache:8.5-alpine' 'webdevops/php-nginx-dev:8.1': stage: level4 before_script: @@ -1134,10 +1360,10 @@ stages: - 'cd docker/php-nginx-dev/8.1' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.1 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.1" >> Dockerfile_67b33780252b32.59774074' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780252b32.59774074' + - 'echo "FROM webdevops/php-nginx-dev:8.1" >> Dockerfile_69287be8086e05.96143394' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8086e05.96143394' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI1MmIzMi41OTc3NDA3NCJ9 Dockerfile_67b33780252b32.59774074' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.1 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4xIiwiRE9DS0VSX1RBRyI6IjguMSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4NmUwNS45NjE0MzM5NCJ9 Dockerfile_69287be8086e05.96143394' - 'docker push webdevops/php-nginx-dev:8.1' - 'docker tag webdevops/php-nginx-dev:8.1 $CI_REGISTRY_IMAGE/php-nginx-dev:8.1' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.1' @@ -1155,10 +1381,10 @@ stages: - 'cd docker/php-nginx-dev/8.1-alpine' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.1-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.1-alpine" >> Dockerfile_67b3378023ff46.25105637' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378023ff46.25105637' + - 'echo "FROM webdevops/php-nginx-dev:8.1-alpine" >> Dockerfile_69287be809d6d0.26709604' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809d6d0.26709604' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyM2ZmNDYuMjUxMDU2MzcifQ== Dockerfile_67b3378023ff46.25105637' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.1-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4xLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjEtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWQ2ZDAuMjY3MDk2MDQifQ== Dockerfile_69287be809d6d0.26709604' - 'docker push webdevops/php-nginx-dev:8.1-alpine' - 'docker tag webdevops/php-nginx-dev:8.1-alpine $CI_REGISTRY_IMAGE/php-nginx-dev:8.1-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.1-alpine' @@ -1176,10 +1402,10 @@ stages: - 'cd docker/php-nginx-dev/8.2' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.2 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.2" >> Dockerfile_67b33780226136.74226750' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780226136.74226750' + - 'echo "FROM webdevops/php-nginx-dev:8.2" >> Dockerfile_69287be8096f14.33205603' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8096f14.33205603' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyNjEzNi43NDIyNjc1MCJ9 Dockerfile_67b33780226136.74226750' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.2 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4yIiwiRE9DS0VSX1RBRyI6IjguMiIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5NmYxNC4zMzIwNTYwMyJ9 Dockerfile_69287be8096f14.33205603' - 'docker push webdevops/php-nginx-dev:8.2' - 'docker tag webdevops/php-nginx-dev:8.2 $CI_REGISTRY_IMAGE/php-nginx-dev:8.2' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.2' @@ -1197,10 +1423,10 @@ stages: - 'cd docker/php-nginx-dev/8.2-alpine' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.2-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.2-alpine" >> Dockerfile_67b3378022f051.78820010' - - 'echo "COPY conf/ /" >> Dockerfile_67b3378022f051.78820010' + - 'echo "FROM webdevops/php-nginx-dev:8.2-alpine" >> Dockerfile_69287be8090e95.27561622' + - 'echo "COPY conf/ /" >> Dockerfile_69287be8090e95.27561622' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMmYwNTEuNzg4MjAwMTAifQ== Dockerfile_67b3378022f051.78820010' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.2-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4yLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjItYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTBlOTUuMjc1NjE2MjIifQ== Dockerfile_69287be8090e95.27561622' - 'docker push webdevops/php-nginx-dev:8.2-alpine' - 'docker tag webdevops/php-nginx-dev:8.2-alpine $CI_REGISTRY_IMAGE/php-nginx-dev:8.2-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.2-alpine' @@ -1218,10 +1444,10 @@ stages: - 'cd docker/php-nginx-dev/8.3' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.3 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.3" >> Dockerfile_67b33780228f64.03329939' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780228f64.03329939' + - 'echo "FROM webdevops/php-nginx-dev:8.3" >> Dockerfile_69287be809fb00.04489363' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809fb00.04489363' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIyOGY2NC4wMzMyOTkzOSJ9 Dockerfile_67b33780228f64.03329939' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.3 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4zIiwiRE9DS0VSX1RBRyI6IjguMyIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5ZmIwMC4wNDQ4OTM2MyJ9 Dockerfile_69287be809fb00.04489363' - 'docker push webdevops/php-nginx-dev:8.3' - 'docker tag webdevops/php-nginx-dev:8.3 $CI_REGISTRY_IMAGE/php-nginx-dev:8.3' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.3' @@ -1239,10 +1465,10 @@ stages: - 'cd docker/php-nginx-dev/8.3-alpine' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.3-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.3-alpine" >> Dockerfile_67b33780223fe6.79212619' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780223fe6.79212619' + - 'echo "FROM webdevops/php-nginx-dev:8.3-alpine" >> Dockerfile_69287be80884b6.29968463' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80884b6.29968463' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjNmZTYuNzkyMTI2MTkifQ== Dockerfile_67b33780223fe6.79212619' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.3-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC4zLWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjMtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwODg0YjYuMjk5Njg0NjMifQ== Dockerfile_69287be80884b6.29968463' - 'docker push webdevops/php-nginx-dev:8.3-alpine' - 'docker tag webdevops/php-nginx-dev:8.3-alpine $CI_REGISTRY_IMAGE/php-nginx-dev:8.3-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.3-alpine' @@ -1260,10 +1486,10 @@ stages: - 'cd docker/php-nginx-dev/8.4' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.4 .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.4" >> Dockerfile_67b33780242ab9.24601667' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780242ab9.24601667' + - 'echo "FROM webdevops/php-nginx-dev:8.4" >> Dockerfile_69287be809b396.90126433' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809b396.90126433' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDI0MmFiOS4yNDYwMTY2NyJ9 Dockerfile_67b33780242ab9.24601667' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.4 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC40IiwiRE9DS0VSX1RBRyI6IjguNCIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA5YjM5Ni45MDEyNjQzMyJ9 Dockerfile_69287be809b396.90126433' - 'docker push webdevops/php-nginx-dev:8.4' - 'docker tag webdevops/php-nginx-dev:8.4 $CI_REGISTRY_IMAGE/php-nginx-dev:8.4' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.4' @@ -1281,10 +1507,10 @@ stages: - 'cd docker/php-nginx-dev/8.4-alpine' - 'docker build --no-cache -t webdevops/php-nginx-dev:8.4-alpine .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/php-nginx-dev:8.4-alpine" >> Dockerfile_67b33780221c39.77304607' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780221c39.77304607' + - 'echo "FROM webdevops/php-nginx-dev:8.4-alpine" >> Dockerfile_69287be80920f5.83000443' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80920f5.83000443' - 'bundle install' - - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjdiMzM3ODAyMjFjMzkuNzczMDQ2MDcifQ== Dockerfile_67b33780221c39.77304607' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.4-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC40LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjQtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOTIwZjUuODMwMDA0NDMifQ== Dockerfile_69287be80920f5.83000443' - 'docker push webdevops/php-nginx-dev:8.4-alpine' - 'docker tag webdevops/php-nginx-dev:8.4-alpine $CI_REGISTRY_IMAGE/php-nginx-dev:8.4-alpine' - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.4-alpine' @@ -1292,6 +1518,48 @@ stages: - aws needs: - 'webdevops/php-nginx:8.4-alpine' +'webdevops/php-nginx-dev:8.5': + stage: level4 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-nginx-dev/8.5' + - 'docker build --no-cache -t webdevops/php-nginx-dev:8.5 .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-nginx-dev:8.5" >> Dockerfile_69287be808e722.96804194' + - 'echo "COPY conf/ /" >> Dockerfile_69287be808e722.96804194' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.5 eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC41IiwiRE9DS0VSX1RBRyI6IjguNSIsIk9TX0ZBTUlMWSI6ImRlYmlhbiIsIk9TX1ZFUlNJT04iOiIxMiIsIlBIUF9PRkZJQ0lBTCI6IjEiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODA4ZTcyMi45NjgwNDE5NCJ9 Dockerfile_69287be808e722.96804194' + - 'docker push webdevops/php-nginx-dev:8.5' + - 'docker tag webdevops/php-nginx-dev:8.5 $CI_REGISTRY_IMAGE/php-nginx-dev:8.5' + - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.5' + tags: + - aws + needs: + - 'webdevops/php-nginx:8.5' +'webdevops/php-nginx-dev:8.5-alpine': + stage: level4 + before_script: + - 'docker login -u $DOCKER_USER -p $DOCKER_PASS' + - 'docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY' + image: webdevops/dockerfile-build-env + script: + - 'cd docker/php-nginx-dev/8.5-alpine' + - 'docker build --no-cache -t webdevops/php-nginx-dev:8.5-alpine .' + - 'cd $CI_PROJECT_DIR/tests/serverspec' + - 'echo "FROM webdevops/php-nginx-dev:8.5-alpine" >> Dockerfile_69287be809e8c8.17761246' + - 'echo "COPY conf/ /" >> Dockerfile_69287be809e8c8.17761246' + - 'bundle install' + - 'bash serverspec.sh spec/docker/php-nginx-dev_spec.rb webdevops/php-nginx-dev:8.5-alpine eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3BocC1uZ2lueC1kZXY6OC41LWFscGluZSIsIkRPQ0tFUl9UQUciOiI4LjUtYWxwaW5lIiwiT1NfRkFNSUxZIjoiYWxwaW5lIiwiT1NfVkVSU0lPTiI6IjMiLCJQSFBfT0ZGSUNJQUwiOiIxIiwiRE9DS0VSRklMRSI6IkRvY2tlcmZpbGVfNjkyODdiZTgwOWU4YzguMTc3NjEyNDYifQ== Dockerfile_69287be809e8c8.17761246' + - 'docker push webdevops/php-nginx-dev:8.5-alpine' + - 'docker tag webdevops/php-nginx-dev:8.5-alpine $CI_REGISTRY_IMAGE/php-nginx-dev:8.5-alpine' + - 'docker push $CI_REGISTRY_IMAGE/php-nginx-dev:8.5-alpine' + tags: + - aws + needs: + - 'webdevops/php-nginx:8.5-alpine' 'webdevops/vsftp:latest': stage: level4 before_script: @@ -1302,10 +1570,10 @@ stages: - 'cd docker/vsftp/latest' - 'docker build --no-cache -t webdevops/vsftp:latest .' - 'cd $CI_PROJECT_DIR/tests/serverspec' - - 'echo "FROM webdevops/vsftp:latest" >> Dockerfile_67b33780216706.35505941' - - 'echo "COPY conf/ /" >> Dockerfile_67b33780216706.35505941' + - 'echo "FROM webdevops/vsftp:latest" >> Dockerfile_69287be80a2556.99736505' + - 'echo "COPY conf/ /" >> Dockerfile_69287be80a2556.99736505' - 'bundle install' - - 'bash serverspec.sh spec/docker/vsftp_spec.rb webdevops/vsftp:latest eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3ZzZnRwOmxhdGVzdCIsIkRPQ0tFUl9UQUciOiJsYXRlc3QiLCJPU19GQU1JTFkiOiJ1YnVudHUiLCJPU19WRVJTSU9OIjoiMjIuMDQiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82N2IzMzc4MDIxNjcwNi4zNTUwNTk0MSJ9 Dockerfile_67b33780216706.35505941' + - 'bash serverspec.sh spec/docker/vsftp_spec.rb webdevops/vsftp:latest eyJET0NLRVJfSU1BR0UiOiJ3ZWJkZXZvcHNcL3ZzZnRwOmxhdGVzdCIsIkRPQ0tFUl9UQUciOiJsYXRlc3QiLCJPU19GQU1JTFkiOiJ1YnVudHUiLCJPU19WRVJTSU9OIjoiMjIuMDQiLCJET0NLRVJGSUxFIjoiRG9ja2VyZmlsZV82OTI4N2JlODBhMjU1Ni45OTczNjUwNSJ9 Dockerfile_69287be80a2556.99736505' - 'docker push webdevops/vsftp:latest' - 'docker tag webdevops/vsftp:latest $CI_REGISTRY_IMAGE/vsftp:latest' - 'docker push $CI_REGISTRY_IMAGE/vsftp:latest' diff --git a/README.md b/README.md index 07a5210e8..e89457efd 100644 --- a/README.md +++ b/README.md @@ -46,8 +46,8 @@ config files from the `provisioning` directory. We generate a multi stage Gitlab-CI configuration using PHP: ``` -docker run --rm -ti -v $PWD:/app -w /app/ci webdevops/php:8.3-alpine composer install -docker run --rm -ti -v $PWD:/app -w /app webdevops/php:8.3-alpine ci/console gitlab:generate +docker run --rm -ti -v $PWD:/app -w /app/ci webdevops/php:8.4-alpine composer install +docker run --rm -ti -v $PWD:/app -w /app webdevops/php:8.4-alpine ci/console gitlab:generate ``` Gitlab CI builds every image independent and runs serverspec and structure tests on every @@ -69,31 +69,37 @@ The following images which are currently supported are based on `php:{VER}-fpm-b * `webdevops/php:8.2` * `webdevops/php:8.3` * `webdevops/php:8.4` +* `webdevops/php:8.5` * `webdevops/php-dev:8.0` * `webdevops/php-dev:8.1` * `webdevops/php-dev:8.2` * `webdevops/php-dev:8.3` * `webdevops/php-dev:8.4` +* `webdevops/php-dev:8.5` * `webdevops/php-apache:8.0` * `webdevops/php-apache:8.1` * `webdevops/php-apache:8.2` * `webdevops/php-apache:8.3` * `webdevops/php-apache:8.4` +* `webdevops/php-apache:8.5` * `webdevops/php-apache-dev:8.0` * `webdevops/php-apache-dev:8.1` * `webdevops/php-apache-dev:8.2` * `webdevops/php-apache-dev:8.3` * `webdevops/php-apache-dev:8.4` +* `webdevops/php-apache-dev:8.5` * `webdevops/php-nginx:8.0` * `webdevops/php-nginx:8.1` * `webdevops/php-nginx:8.2` * `webdevops/php-nginx:8.3` * `webdevops/php-nginx:8.4` +* `webdevops/php-nginx:8.5` * `webdevops/php-nginx-dev:8.0` * `webdevops/php-nginx-dev:8.1` * `webdevops/php-nginx-dev:8.2` * `webdevops/php-nginx-dev:8.3` * `webdevops/php-nginx-dev:8.4` +* `webdevops/php-nginx-dev:8.5` ### Alpine PHP @@ -105,28 +111,34 @@ The following images which are currently supported are based on `php:{VER}-fpm-a * `webdevops/php:8.2-alpine` * `webdevops/php:8.3-alpine` * `webdevops/php:8.4-alpine` +* `webdevops/php:8.5-alpine` * `webdevops/php-dev:8.0-alpine` * `webdevops/php-dev:8.1-alpine` * `webdevops/php-dev:8.2-alpine` * `webdevops/php-dev:8.3-alpine` * `webdevops/php-dev:8.4-alpine` +* `webdevops/php-dev:8.5-alpine` * `webdevops/php-apache:8.0-alpine` * `webdevops/php-apache:8.1-alpine` * `webdevops/php-apache:8.2-alpine` * `webdevops/php-apache:8.3-alpine` * `webdevops/php-apache:8.4-alpine` +* `webdevops/php-apache:8.5-alpine` * `webdevops/php-apache-dev:8.0-alpine` * `webdevops/php-apache-dev:8.1-alpine` * `webdevops/php-apache-dev:8.2-alpine` * `webdevops/php-apache-dev:8.3-alpine` * `webdevops/php-apache-dev:8.4-alpine` +* `webdevops/php-apache-dev:8.5-alpine` * `webdevops/php-nginx:8.0-alpine` * `webdevops/php-nginx:8.1-alpine` * `webdevops/php-nginx:8.2-alpine` * `webdevops/php-nginx:8.3-alpine` * `webdevops/php-nginx:8.4-alpine` +* `webdevops/php-nginx:8.5-alpine` * `webdevops/php-nginx-dev:8.0-alpine` * `webdevops/php-nginx-dev:8.1-alpine` * `webdevops/php-nginx-dev:8.2-alpine` * `webdevops/php-nginx-dev:8.3-alpine` * `webdevops/php-nginx-dev:8.4-alpine` +* `webdevops/php-nginx-dev:8.5-alpine` diff --git a/build-local.sh b/build-local.sh index 89eec063c..f61a80bf3 100755 --- a/build-local.sh +++ b/build-local.sh @@ -3,7 +3,7 @@ set -exuo pipefail ROOT_DIR=$(pwd) -PHP_VERSION=8.4 +PHP_VERSION=8.5 #docker run --rm -ti -v $PWD:/app -w /app webdevops/dockerfile-build-env make provision diff --git a/conf/console.yml b/conf/console.yml index 5dce68647..e4de7f2cf 100644 --- a/conf/console.yml +++ b/conf/console.yml @@ -43,7 +43,7 @@ dockerTest: OS_FAMILY: 'debian' OS_VERSION: '9' PHP_OFFICIAL: '1' - 'php[^:]*:8.(0|1|2|3|4)': + 'php[^:]*:8.(0|1|2|3|4|5)': OS_FAMILY: 'debian' OS_VERSION: '12' PHP_OFFICIAL: '1' diff --git a/docker/php-apache-dev/8.5-alpine/Dockerfile b/docker/php-apache-dev/8.5-alpine/Dockerfile new file mode 100644 index 000000000..02781dc8b --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/Dockerfile @@ -0,0 +1,38 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-apache-dev:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php-apache:8.5-alpine + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && apk-install \ + linux-headers \ + make \ + autoconf \ + g++ \ + && pecl install xdebug \ + && apk del -f --purge \ + autoconf \ + linux-headers \ + g++ \ + make \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap diff --git a/docker/php-apache-dev/8.5-alpine/Dockerfile.jinja2 b/docker/php-apache-dev/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..8fe68a4c7 --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,11 @@ +{{ docker.from("php-apache", "8.5-alpine") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.webDevelopment() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopmentAlpine(version="8.5") }} \ + {{ provision.runBootstrap() }} diff --git a/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh b/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/conf.d/02-dev.conf b/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/conf.d/02-dev.conf new file mode 100644 index 000000000..75e5f4396 --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/conf.d/02-dev.conf @@ -0,0 +1,8 @@ +# EnableSendfile: Control whether the sendfile kernel support is +# used to deliver files (assuming that the OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. Please see +# http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile +EnableSendfile off + +LogLevel info diff --git a/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep b/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/02-dev.conf b/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/02-dev.conf new file mode 100644 index 000000000..54918ec2b --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/etc/httpd/vhost.common.d/02-dev.conf @@ -0,0 +1,10 @@ +"> + FileETag None + + + Header unset ETag + Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" + Header set Pragma "no-cache" + Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" + + diff --git a/docker/php-apache-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-apache-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/20-apache-dev.sh b/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/20-apache-dev.sh new file mode 100644 index 000000000..a9d2c6e92 --- /dev/null +++ b/docker/php-apache-dev/8.5-alpine/conf/provision/entrypoint.d/20-apache-dev.sh @@ -0,0 +1,5 @@ +go-replace \ + -s "" -r "$WEB_NO_CACHE_PATTERN" \ + --path=/opt/docker/etc/httpd/ \ + --path-pattern='*.conf' \ + --ignore-empty diff --git a/docker/php-apache-dev/8.5/Dockerfile b/docker/php-apache-dev/8.5/Dockerfile new file mode 100644 index 000000000..6dd17f1ab --- /dev/null +++ b/docker/php-apache-dev/8.5/Dockerfile @@ -0,0 +1,32 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-apache-dev:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php-apache:8.5 + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ + && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ + && apt-install tideways-php tideways-daemon \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap \ + && docker-image-cleanup diff --git a/docker/php-apache-dev/8.5/Dockerfile.jinja2 b/docker/php-apache-dev/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..9f270b4d6 --- /dev/null +++ b/docker/php-apache-dev/8.5/Dockerfile.jinja2 @@ -0,0 +1,12 @@ +{{ docker.from("php-apache", "8.5") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.webDevelopment() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopment(version="8.5") }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} diff --git a/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.sh b/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-apache-dev/8.5/conf/etc/httpd/conf.d/02-dev.conf b/docker/php-apache-dev/8.5/conf/etc/httpd/conf.d/02-dev.conf new file mode 100644 index 000000000..75e5f4396 --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/etc/httpd/conf.d/02-dev.conf @@ -0,0 +1,8 @@ +# EnableSendfile: Control whether the sendfile kernel support is +# used to deliver files (assuming that the OS supports it). +# The default is on; turn this off if you serve from NFS-mounted +# filesystems. Please see +# http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile +EnableSendfile off + +LogLevel info diff --git a/docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/.gitkeep b/docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/02-dev.conf b/docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/02-dev.conf new file mode 100644 index 000000000..54918ec2b --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/etc/httpd/vhost.common.d/02-dev.conf @@ -0,0 +1,10 @@ +"> + FileETag None + + + Header unset ETag + Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" + Header set Pragma "no-cache" + Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" + + diff --git a/docker/php-apache-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-apache-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/10-php.sh b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/20-apache-dev.sh b/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/20-apache-dev.sh new file mode 100644 index 000000000..a9d2c6e92 --- /dev/null +++ b/docker/php-apache-dev/8.5/conf/provision/entrypoint.d/20-apache-dev.sh @@ -0,0 +1,5 @@ +go-replace \ + -s "" -r "$WEB_NO_CACHE_PATTERN" \ + --path=/opt/docker/etc/httpd/ \ + --path-pattern='*.conf' \ + --ignore-empty diff --git a/docker/php-apache/8.5-alpine/Dockerfile b/docker/php-apache/8.5-alpine/Dockerfile new file mode 100644 index 000000000..de6534a9e --- /dev/null +++ b/docker/php-apache/8.5-alpine/Dockerfile @@ -0,0 +1,33 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-apache:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5-alpine + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install apache + && apk-install \ + apache2 \ + apache2-ctl \ + apache2-utils \ + apache2-proxy \ + apache2-ssl \ + # Fix issue with module loading order of lbmethod_* (see https://serverfault.com/questions/922573/apache2-fails-to-start-after-recent-update-to-2-4-34-no-clue-why) + && sed -i '2,5{H;d}; ${p;x;s/^\n//}' /etc/apache2/conf.d/proxy.conf \ + && sed -ri ' \ + s!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g; \ + s!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g; \ + ' /etc/apache2/httpd.conf \ + && docker-run-bootstrap + +EXPOSE 80 443 diff --git a/docker/php-apache/8.5-alpine/Dockerfile.jinja2 b/docker/php-apache/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..ee9f6d967 --- /dev/null +++ b/docker/php-apache/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,12 @@ +{{ docker.from("php", "8.5-alpine") }} + +{{ environment.web() }} +{{ environment.webPhp() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ apache.alpine() }} \ + {{ provision.runBootstrap() }} + +{{ docker.expose('80 443') }} diff --git a/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.d/10-init.sh b/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.d/10-init.sh new file mode 100644 index 000000000..4ef318a1e --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.d/10-init.sh @@ -0,0 +1,6 @@ +if [[ ! -e "$WEB_DOCUMENT_ROOT" ]]; then + echo "" + echo "[WARNING] WEB_DOCUMENT_ROOT does not exists with path \"$WEB_DOCUMENT_ROOT\"!" + echo "" +fi + diff --git a/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.sh b/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.sh new file mode 100644 index 000000000..f88544c62 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/bin/service.d/httpd.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_APACHE_OPTS" ]]; then SERVICE_APACHE_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/httpd.d/" + +# Apache gets grumpy about PID files pre-existing +rm -f /var/run/httpd/httpd.pid + +exec /usr/sbin/apachectl -DFOREGROUND $SERVICE_APACHE_OPTS diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/.gitkeep b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-error-document.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-error-document.conf new file mode 100644 index 000000000..ebabf87e4 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-error-document.conf @@ -0,0 +1,15 @@ +####################################### +# Faster error documents +####################################### + + ErrorDocument 400 "400 Bad Request" + ErrorDocument 401 "401 Unauthorized" + ErrorDocument 403 "403 Forbidden" + ErrorDocument 404 "404 Not Found" + ErrorDocument 405 "405 Method Not Allowed" + + ErrorDocument 500 "500 Internal Server Error" + ErrorDocument 501 "501 Not Implemented" + ErrorDocument 502 "502 Bad Gateway" + ErrorDocument 503 "503 Service Unavailable" + diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-log.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-log.conf new file mode 100644 index 000000000..950e45105 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-log.conf @@ -0,0 +1,4 @@ +LogFormat "[httpd:access] %V:%p %{X-Forwarded-For}i - %h %l %u %t \"%r\" %>s bytesIn:%I bytesOut:%O reqTime:%T" dockerlog +LogLevel warn +CustomLog /docker.stdout dockerlog +ErrorLog /docker.stderr diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-php.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-php.conf new file mode 100644 index 000000000..cd62792e2 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-php.conf @@ -0,0 +1,37 @@ +############################# +# mod_proxy_fcgi +# official solution +# apache 2.4 and later +############################# + + + > + ProxySet connectiontimeout=5 timeout= + + + + SetHandler "proxy:fcgi://" + + + +############################# +# mod_fastcgi +# apaache 2.2 and 2.4 +############################# + + + AddHandler php-fcgi .php + Action php-fcgi /php-fcgi + Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi + FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -host "" -pass-header Authorization -idle-timeout + + + + Allow from all + + = 2.4> + Require all granted + + + + diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-server.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-server.conf new file mode 100644 index 000000000..80b971734 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/conf.d/10-server.conf @@ -0,0 +1,18 @@ +# Settings +TimeOut 1000 +ServerName "" + +DirectoryIndex +DocumentRoot "" + +"> + Options FollowSymLinks + AllowOverride All + + + Allow from all + + = 2.4> + Require all granted + + diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/global.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/global.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/global.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/main.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/main.conf new file mode 100644 index 000000000..fb04614ca --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/main.conf @@ -0,0 +1,10 @@ +Include /opt/docker/etc/httpd/global.conf +Include /opt/docker/etc/httpd/php.conf + + + Include /opt/docker/etc/httpd/conf.d/*.conf + += 2.4> + IncludeOptional /opt/docker/etc/httpd/conf.d/*.conf + +Include /opt/docker/etc/httpd/vhost.conf diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/php.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/php.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/php.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.crt b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.crt new file mode 100644 index 000000000..6b0694907 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE1DCCArwCCQDMMwGnSuK0tTANBgkqhkiG9w0BAQsFADAsMRswGQYDVQQKExJE +b2NrZXIgQm9pbGVycGxhdGUxDTALBgNVBAMUBCoudm0wHhcNMTUwNTA0MTcxNDQw +WhcNMjUwNTAxMTcxNDQwWjAsMRswGQYDVQQKExJEb2NrZXIgQm9pbGVycGxhdGUx +DTALBgNVBAMUBCoudm0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK +3TIUiyDvXelWeY9VXMrpjuZtYpVSDsACLpjFUhMnsP5/iKT0VbeZyqHvmwZjAg4G +Y10d+yZDdgv/xeu0HPOFbtR6pCp10d1tdLHZto5Cyuxu7IQsAVjnD6Ko7XFwtNk7 +9o6JZfAFaGL4w5MokrVmCtspnsMZH7/7zU4f96cbF39zLopnpuXGD6t6DA8Qj3gy +0duaTjs42bYRN+rwLzVKAev99iQ4kPMJn4vV6/Xk6rtoSzC67GQyVZYaFypicD1S +NtsRmgEVvjCBDbrLOneUiRwff6qxEsZi7Hxv7BKFj4iUWnII7K/nP7T6uBHQjHO+ +FpsGkU9lCMrCeVFBe8kKz/cbhd+yLUxXwAPr6gSOPmwn232Gy4tozvqZHpbUxsgx +7sT3ej9K66h1D7J+BjNFWYM1hbnC1r7H/xS7EBzBV8qRoQCVe08Juf5xsouXFakD +clLV4+L+1cxkpwsCQDly5g3tm/TBqA2O+ZJ+YHQDHKkzMyhLs6i0X/M5qvJBiLg1 +GLTCS20rpQ5gXTEGuINqHgwXQWkUO6bhgSYqdHGX3zbZ5+qWpI4eui3dHZ1Ll0VH +6Icpb7ORTQwhc6W8KBlybssYPSlGOEBGUjYGNheoz9FpoSkxCis+P8ZNKtrmpPoq +Su0eOOGFOFHG02eOgPVxSwrDeN9MVJo7BPysGMHJmQIDAQABMA0GCSqGSIb3DQEB +CwUAA4ICAQC63g6NHmQKbiy3G6iaDkpUSbr5Mq2YgU61XnvWVyREqDcy/BXCw9oY +SJ/KUvCpqPnACNOFqjadRAmPiA9nf2WduoCgwQGV/YRFGswSuVvh/3X2TX5NWvbS +t8MQDttQg1dxpiMUjlu3rqhfohBdWJvp2lVSdpDb/MOlXBc/+p7HfOHwhqB7wwPN +NNbSKUbZqZxmD8cOf1X0hASr1yfFPj+2vST3ESaON8S0T2p63YX/sD5jvOUiEuyw +I5WcvLmiRZA07SH8nWyckLY3qWL+OlhSZrlAnolWS00b+7h5LNuRYEjKzwVgntoA +aCopyQih6wIk0+AfJO4sfhJBmQhnIrAaP/zwBH5g9zVizLf5H7U+hNXrMwgw55Sq +vjMdkZHvPKUXTvVit/rYE9H+PY3brkRWzOl4V/i/ZLJJm5805H/NyTbz9kPMJw2Q +nn+KOpfXXySD39f8iuRgSKXsYNul38hxWgcZZ6g+sOOp2n/VUmf0eZUWNnJ8i7AP +4Qif7aDKMcibOwSwsB+DKZXDvZ5XSdnMphtuLS5rPSL81rVRmWC2DMfQ2eP8j0WN +VTroSk0xedQ7Qr+9TNooi9IyzX6n1a2S1UiciEZ3ZcDbXPl/P01m+IYZyPnLv0+9 +ZeioZYh1JLv3/OKsMrMLTfh2ZCj3aXwmc2Owi/wU2LS5QUOMcHH7CQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.csr b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.csr new file mode 100644 index 000000000..8a9909f77 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEcTCCAlkCAQAwLDEbMBkGA1UEChMSRG9ja2VyIEJvaWxlcnBsYXRlMQ0wCwYD +VQQDFAQqLnZtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt0yFIsg +713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik9FW3mcqh75sGYwIOBmNdHfsm +Q3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyELAFY5w+iqO1xcLTZO/aOiWXw +BWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6KZ6blxg+regwPEI94MtHbmk47 +ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEswuuxkMlWWGhcqYnA9UjbbEZoB +Fb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpyCOyv5z+0+rgR0IxzvhabBpFP +ZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9hsuLaM76mR6W1MbIMe7E93o/ +SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEAlXtPCbn+cbKLlxWpA3JS1ePi +/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMoS7OotF/zOaryQYi4NRi0wktt +K6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efqlqSOHrot3R2dS5dFR+iHKW+z +kU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEpMQorPj/GTSra5qT6KkrtHjjh +hThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEAAaAAMA0GCSqGSIb3DQEBCwUA +A4ICAQBsEBgC2YepuZq/8UqvKMZKVy/etDKXj7BB+QPb+leNiKD7p4LDxHJsZSH8 +Ku9uMPeLfiQDn5jA41k5SlGttzvObd65RdEbO3yHpqsg05EGSDDLfaE1k2Al/qmX +/o8roPZF7+2kZthgMAgkcokS54LYqEYTGqOf3J9Ss0yRIZwhaOVebfFIbIOdpw0B +JNMIJPHTMdZrcuRVI+wR1uPLIlEJzBvxTGbTrvPU25WJFtu+EajKqXO0SHdy0yx8 +uH4ykRBJRc36+oYo7nZ5D56dh7pZn3+9J64FKAOV0Q3KqMFieGy053ezuhJd70eZ +UozTgfjs3WpMzoYmKETSyl3XZSdInRe+sUlKPruTsKyg69oYxjPlrGfAmmGcCFca +TnZinT18dI92zK7OtOVkmYeYKC1lwuhftVrNMXzZuHOGpS9NNYtc4nDqDMIEOfV3 +6rCdu03WjEgJ+Z67tJs16xOx9du4/EHxS2Ijn9DPfVJvYy0TgzDi1BUpjWx0KTLx +C4OQbEZ/QTWmHVbSch/hcZhzbf7SNh5RpnW4EtmcpDFjIKMfxJmoKeiTf7qnilx0 +7uRvsZFKoDKRDOFiPfgMg5AOtLHziYsd9m0tJjC2GHvFuPjzOtzhnUUjmmvht170 +2aqKakjST4amg7jzLcs871HX0/WjOtt29NpOz140blkKf1bisg== +-----END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.key b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.key new file mode 100644 index 000000000..c9eec145f --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/ssl/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAyt0yFIsg713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik +9FW3mcqh75sGYwIOBmNdHfsmQ3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyE +LAFY5w+iqO1xcLTZO/aOiWXwBWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6K +Z6blxg+regwPEI94MtHbmk47ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEsw +uuxkMlWWGhcqYnA9UjbbEZoBFb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpy +COyv5z+0+rgR0IxzvhabBpFPZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9 +hsuLaM76mR6W1MbIMe7E93o/SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEA +lXtPCbn+cbKLlxWpA3JS1ePi/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMo +S7OotF/zOaryQYi4NRi0wkttK6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efq +lqSOHrot3R2dS5dFR+iHKW+zkU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEp +MQorPj/GTSra5qT6KkrtHjjhhThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEA +AQKCAgAbZPdoUsllyZbC+LNkYZ19ILD5QIDNjfRb1xMGQmkXyQz1B+zOmeyrNfPc +OWEJabOfJTfj3pByN7SzG3US4333HNpQnW6mbmqqZ0HFFqPrXR/Ecuf+UUhCG5hp +m3bgM2vKbyccYsmg0VHcKfzrU7RvTTP/UNMjx2fThwvvwS+ttuSdF0HVcXJB5sfP +OWWnZNhkdHZlRf81VCED/jsZqCZYEh5eMyj9AoXvXL4zayPPf+tC0DSKaXW2Xlxg +tZQhqup8+a9nlxZia0Z9hu8clo6jXkiP8FuKgfCMV0cOjiCKLLHS5svTbLLsVWwJ +F2ZAdVcD6mWQ43qHOEK5NEzGvQKO14CaOLnVT2yAkMcyNohsEgoDP9oCBGDJQbBH +NmtZfpVjjtuTr9P9TEkU1FcBRo0x6Il/DkzamGbOeFAmgnaGElhJ5c/CAG7whaIf +mUfFOBGPH/wESY3gBOACDofeSh27RrlvbLaPiCGKivDUTBmhBsIuso6XqOKbvtfV +/HhhndpdRVfIj4DdE7gIrLIGN977JMVAXFCNz7KrvAWwcOXrCHCoWpklJ9repq8l +26ICY8K7VXktzDHQUmhd88ZWR+9ASURsJghUgZUOcMrEGyvci6Y8hpLhHiNVPHuQ ++ps7tpPsXSntBUqWBzhRZh74+nJlOOV6oYykl30JT2JzB6lwiQKCAQEA9ecn8N2z +20tR2UEiTv/MjVSepQtAAajegvcd1iasvvQKXnh3XLmoZHzH2tTa0lp5RIZpUQPl +lOTwko0lYTBnYblt65AJQ3FTgisNobIpoqE8BFXLm6wggz7CbabjmPGDe173lPGR +sI0YSKYvzrdn4zw8Fh6WULJyZHLi58zJYL3r0WBDiOoxpGaGA1GlmkuIWjhKHaX2 +OvF1vOuQDJ2eDyTc5TYFC0NKG76Mvanov5L/yrhNM/umbmp0SPspzHGZobAKUr20 +OazFT8S+2TA1OTxWNbiPbSimFoaZbEdqsNACGfVJWO8Sh8iqlt5RmEcSiSvGBj6L +QKprRO9Fsp2GawKCAQEA0zGhRsnux4JTNsdUSYsEJtITMj6eE+nl7CoZ9DAOwC5X +6/aSpUE4TT+pWNrt9iluXiGL0j89UJ7r/L1OcsiyzGb8ig9NU4zr1NIGTZ0DstHi +HPYINjeiBJEFIy17kOQn+9/I5c4hBUwz6ihwNoEomymVB/EsLJKAML0AudJGKg+Z +/f/qrS40eab5SAiaKgsh0MZnj+vIxyGBydt6r2HGmjfNITVbXIu6IpO+6NXDwM/e +7v10AAZ3j9+gb1RedLg2ghuIuYU90hmMhtVWsh9nVmaOkMW9/WFgOPYvt/mHH/hR +d4pePZ9kACGmqo/b9sHvHw1YEubtCt1VUiNuFxnJCwKCAQBWnxz0vkRTJY8phsY9 +KeK2jm5sGTBs5T2syLwb6ffENFdKvAjgAw6Mh2And/+1ReWd+/MxdLv03UjZdxsJ +x3FDfXx5FH4O4ebW3a+pnAcKoN1xcX+N0O6LDRqUYcue3sTAOs3gC9CUbr91KAWD +Phw8ccWAzTmKJ7IgLFA982ekyoI9eTmRC159WRgwJxy844qerWF+XC4GyXP+HsTZ +jNRW5Vdi7sqMEyIR7+fIEAhLI88zbATWIPmZv6pC4ybwO7wwtsCMMQNBpdjDprzL +6S12ggikV+U+QKlxGe0FtYqhykRTPJKf32eZqVheWOZJTA/9fgv9ux52oxGycM8O +gmsNAoIBAQC60m5uZnd5uYnPLWkcXYNgq/kbO1UvHHut/FhVMKX7z4MrU0XKNfWO +MECoP5K9bU0aq+Y6KIMe7FapjvT0iSHRu1Cu+HZY8JI2A0xcIAeDijLRl7sP6wrB +q1+2DKgANjRAlWfsEfoX658JBpitPngjOheBnRCMpVQMyUT5HE/BKWf5zwdUB0mY +S+K8nA90HcDeJIS8RcGolbVwUV0oBABhr/cf50lYhqozqCr7YQ33ZGs7Uq3oz8+4 +UARmN2YPLl3Znm3GX12em8c6B0LX8vvA7Jw06Rf2Ksup1+3Ce1PTLiEy9A4FyRf3 +Hc2HmBbnJAtZlr5QikMqlzzAmmLqwH6dAoIBAC+ryaQGJFsijCSuaDfRp/uy9xnd +DjgMdTwjl5WLBmyudChVMANl8eqCbvVO41CN84yORk03oQ4cx0eKxAZaLaSzgkb3 +W0X2nFQe7VJSYMQswCQ+1WfJvEFrIdkEKIa//uQdhqNrgUKSNVhhSTMbNEkDTIWn +ssbv2H9hvUaFt/J/vP9zCKuU5oYvNU7Oi6ZXRYezRn9atlJYanLFoJnHUBRzGms5 +K0vhdCPDXQq87z5Yudoh0jLUQF9Nx0GTWeBceQ9n5hZeRUNQWxP4AJThQX9KSPTS +mbL3Kh4XNRmAUJ2N+Njh+3dg91s+JkKvC1wcspLsmLPQe+9AxBSH9y5JE/8= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.conf new file mode 100644 index 000000000..384696b4e --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.conf @@ -0,0 +1,7 @@ +# compatibility for PHP and TYPO3 Docker Boilerplate + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/01-boilerplate.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/01-boilerplate.conf new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.common.d/01-boilerplate.conf @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.conf new file mode 100644 index 000000000..c04a94318 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.conf @@ -0,0 +1,36 @@ +####################################### +# Vhost +####################################### + + + ServerName docker.vm + ServerAlias + DocumentRoot "" + + UseCanonicalName Off + + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + + + + + + ServerName docker.vm + ServerAlias + DocumentRoot "" + + UseCanonicalName Off + + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + + + Include /opt/docker/etc/httpd/vhost.ssl.conf + diff --git a/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.ssl.conf b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.ssl.conf new file mode 100644 index 000000000..cf5fbc604 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/httpd/vhost.ssl.conf @@ -0,0 +1,26 @@ + ############ + # SSL + ############ + + SSLEngine on + SSLCertificateFile /opt/docker/etc/httpd/ssl/server.crt + SSLCertificateKeyFile /opt/docker/etc/httpd/ssl/server.key + + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + + BrowserMatch "MSIE [2-6]" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + # MSIE 7 and newer should be able to use keepalive + # This regexp is ok with 17-9! + BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown + + ## SSL Hardening + SSLProtocol All -SSLv2 -SSLv3 + SSLHonorCipherOrder on + SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA' diff --git a/docker/php-apache/8.5-alpine/conf/etc/supervisor.d/apache.conf b/docker/php-apache/8.5-alpine/conf/etc/supervisor.d/apache.conf new file mode 100644 index 000000000..12a6f86f7 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/etc/supervisor.d/apache.conf @@ -0,0 +1,14 @@ +[group:apache] +programs=apached +priority=20 + +[program:apached] +command = /opt/docker/bin/service.d/httpd.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/.gitkeep b/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-apache.sh b/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-apache.sh new file mode 100644 index 000000000..e9feb08b4 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-apache.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) +IMAGE_DISTRIBUTION=$(docker-image-info dist) +IMAGE_DISTRIBUTION_VERSION=$(docker-image-info dist-version) +IMAGE_DISTRIBUTION_VERSION_MAIN=$(echo "$IMAGE_DISTRIBUTION_VERSION" | sed 's/^\([0-9]*\).*/\1/g') + +# Collect environment variables +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + APACHE_MAIN_PATH=/etc/apache2/ + APACHE_DOCKER_VHOST=/etc/apache2/sites-enabled/10-docker.conf + ;; + + RedHat) + APACHE_MAIN_PATH=/etc/httpd/ + APACHE_DOCKER_VHOST=/etc/httpd/conf.d/zzz-docker.conf + ;; + + Alpine) + APACHE_MAIN_PATH=/etc/apache2/ + APACHE_DOCKER_VHOST=/etc/apache2/conf.d/zzz-docker.conf + ;; +esac + +# Enable apache main config +ln -sf -- /opt/docker/etc/httpd/main.conf "$APACHE_DOCKER_VHOST" + +# Ensure /var/run/apache2 exists +mkdir -p -- "/var/run/apache2" + +if [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + mkdir -p -- "/run/apache2" +fi + +# Maintain lock directory +if [[ "$IMAGE_FAMILY" == "Debian" ]]; then + mkdir -p -- "/var/lock/apache2" + chmod 0750 -- "/var/lock/apache2" + chown www-data:www-data -- "/var/lock/apache2" +fi + +APACHE_CONF_FILES=$(find "$APACHE_MAIN_PATH" -type f -iname '*.conf' -o -iname 'default*' -o -iname '*log') + +# Change log to Docker stdout +go-replace --regex --regex-backrefs \ + -s '^[\s]*(CustomLog|ErrorLog|TransferLog) ([^\s]+)(.*)' -r '$1 /docker.stdout $3' \ + -s '^[\s]*(ErrorLog) ([^\s]+)(.*)' -r '$1 /docker.stderr $3' \ + --path="$APACHE_MAIN_PATH" \ + --path-regex='(.*\.conf|default.*|.*log)$' + +# Switch MPM to event +if [[ "$IMAGE_FAMILY" == "RedHat" ]]; then + go-replace --mode=line --regex --regex-backrefs \ + -s '^[\s#]*(LoadModule mpm_prefork_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule mpm_event_module.*)' -r '$1' \ + -- /etc/httpd/conf.modules.d/00-mpm.conf +fi + +if [[ "$IMAGE_DISTRIBUTION" == "Ubuntu" ]] && [[ "$IMAGE_DISTRIBUTION_VERSION_MAIN" -ge 14 ]]; then + a2enmod mpm_event +fi + +if [[ "$IMAGE_DISTRIBUTION" == "Debian" ]] && [[ "$IMAGE_DISTRIBUTION_VERSION_MAIN" -ge 8 ]]; then + a2enmod mpm_event +fi + +if [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + go-replace --mode=line --regex --regex-backrefs \ + -s '^[\s#]*(LoadModule mpm_prefork_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule mpm_event_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule deflate_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule rewrite_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule logio_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule slotmem_shm_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule actions_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule expires_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule ssl_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule socache_shmcb_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_ajp_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_connect_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_balancer_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_express_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_fcgi_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_fdpass_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_ftp_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_http_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_scgi_module.*)' -r '$1' \ + -- /etc/apache2/httpd.conf \ + /etc/apache2/conf.d/ssl.conf \ + /etc/apache2/conf.d/proxy.conf + + # Remove default vhost + sed -i -e '1h;2,$H;$!d;g' -e 's//#-> removed vhost/g' /etc/apache2/conf.d/ssl.conf +fi + +# Fix rights of ssl files +chown -R root:root /opt/docker/etc/httpd/ssl +find /opt/docker/etc/httpd/ssl -type d -exec chmod 750 {} \; +find /opt/docker/etc/httpd/ssl -type f -exec chmod 640 {} \; diff --git a/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-php.sh b/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..c8669ca25 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Restrict php-fpm to local connection +go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 127.0.0.1:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + diff --git a/docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/.gitkeep b/docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/20-apache.sh b/docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/20-apache.sh new file mode 100644 index 000000000..42ef48932 --- /dev/null +++ b/docker/php-apache/8.5-alpine/conf/provision/entrypoint.d/20-apache.sh @@ -0,0 +1,16 @@ +# Replace markers +go-replace \ + -s "" -r "$WEB_DOCUMENT_INDEX" \ + -s "" -r "$WEB_DOCUMENT_ROOT" \ + -s "" -r "$WEB_ALIAS_DOMAIN" \ + -s "" -r "$HOSTNAME" \ + -s "" -r "$WEB_PHP_SOCKET" \ + -s "" -r "$WEB_PHP_TIMEOUT" \ + --path=/opt/docker/etc/httpd/ \ + --path-pattern='*.conf' \ + --ignore-empty + +if [[ -z "$WEB_PHP_SOCKET" ]]; then + ## WEB_PHP_SOCKET is not set, remove PHP files + rm -f -- /opt/docker/etc/httpd/conf.d/10-php.conf +fi diff --git a/docker/php-apache/8.5/Dockerfile b/docker/php-apache/8.5/Dockerfile new file mode 100644 index 000000000..c78820cad --- /dev/null +++ b/docker/php-apache/8.5/Dockerfile @@ -0,0 +1,30 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-apache:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5 + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install apache + && apt-install \ + apache2 \ + && sed -ri ' \ + s!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g; \ + s!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g; \ + ' /etc/apache2/apache2.conf \ + && rm -f /etc/apache2/sites-enabled/* \ + && a2enmod actions proxy proxy_fcgi ssl rewrite headers expires \ + && docker-run-bootstrap \ + && docker-image-cleanup + +EXPOSE 80 443 diff --git a/docker/php-apache/8.5/Dockerfile.jinja2 b/docker/php-apache/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..9863f453d --- /dev/null +++ b/docker/php-apache/8.5/Dockerfile.jinja2 @@ -0,0 +1,13 @@ +{{ docker.from("php", "8.5") }} + +{{ environment.web() }} +{{ environment.webPhp() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ apache.debian12() }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} + +{{ docker.expose('80 443') }} diff --git a/docker/php-apache/8.5/conf/bin/service.d/httpd.d/10-init.sh b/docker/php-apache/8.5/conf/bin/service.d/httpd.d/10-init.sh new file mode 100644 index 000000000..4ef318a1e --- /dev/null +++ b/docker/php-apache/8.5/conf/bin/service.d/httpd.d/10-init.sh @@ -0,0 +1,6 @@ +if [[ ! -e "$WEB_DOCUMENT_ROOT" ]]; then + echo "" + echo "[WARNING] WEB_DOCUMENT_ROOT does not exists with path \"$WEB_DOCUMENT_ROOT\"!" + echo "" +fi + diff --git a/docker/php-apache/8.5/conf/bin/service.d/httpd.sh b/docker/php-apache/8.5/conf/bin/service.d/httpd.sh new file mode 100644 index 000000000..1d871e7ea --- /dev/null +++ b/docker/php-apache/8.5/conf/bin/service.d/httpd.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_APACHE_OPTS" ]]; then SERVICE_APACHE_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/httpd.d/" + +# Apache gets grumpy about PID files pre-existing +rm -f /var/run/apache2/apache2*.pid + +source /etc/apache2/envvars +exec apache2 -DFOREGROUND -DAPACHE_LOCK_DIR $SERVICE_APACHE_OPTS diff --git a/docker/php-apache/8.5/conf/etc/httpd/conf.d/.gitkeep b/docker/php-apache/8.5/conf/etc/httpd/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-error-document.conf b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-error-document.conf new file mode 100644 index 000000000..ebabf87e4 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-error-document.conf @@ -0,0 +1,15 @@ +####################################### +# Faster error documents +####################################### + + ErrorDocument 400 "400 Bad Request" + ErrorDocument 401 "401 Unauthorized" + ErrorDocument 403 "403 Forbidden" + ErrorDocument 404 "404 Not Found" + ErrorDocument 405 "405 Method Not Allowed" + + ErrorDocument 500 "500 Internal Server Error" + ErrorDocument 501 "501 Not Implemented" + ErrorDocument 502 "502 Bad Gateway" + ErrorDocument 503 "503 Service Unavailable" + diff --git a/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-log.conf b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-log.conf new file mode 100644 index 000000000..950e45105 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-log.conf @@ -0,0 +1,4 @@ +LogFormat "[httpd:access] %V:%p %{X-Forwarded-For}i - %h %l %u %t \"%r\" %>s bytesIn:%I bytesOut:%O reqTime:%T" dockerlog +LogLevel warn +CustomLog /docker.stdout dockerlog +ErrorLog /docker.stderr diff --git a/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-php.conf b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-php.conf new file mode 100644 index 000000000..cd62792e2 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-php.conf @@ -0,0 +1,37 @@ +############################# +# mod_proxy_fcgi +# official solution +# apache 2.4 and later +############################# + + + > + ProxySet connectiontimeout=5 timeout= + + + + SetHandler "proxy:fcgi://" + + + +############################# +# mod_fastcgi +# apaache 2.2 and 2.4 +############################# + + + AddHandler php-fcgi .php + Action php-fcgi /php-fcgi + Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi + FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -host "" -pass-header Authorization -idle-timeout + + + + Allow from all + + = 2.4> + Require all granted + + + + diff --git a/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-server.conf b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-server.conf new file mode 100644 index 000000000..80b971734 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/conf.d/10-server.conf @@ -0,0 +1,18 @@ +# Settings +TimeOut 1000 +ServerName "" + +DirectoryIndex +DocumentRoot "" + +"> + Options FollowSymLinks + AllowOverride All + + + Allow from all + + = 2.4> + Require all granted + + diff --git a/docker/php-apache/8.5/conf/etc/httpd/global.conf b/docker/php-apache/8.5/conf/etc/httpd/global.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/global.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-apache/8.5/conf/etc/httpd/main.conf b/docker/php-apache/8.5/conf/etc/httpd/main.conf new file mode 100644 index 000000000..fb04614ca --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/main.conf @@ -0,0 +1,10 @@ +Include /opt/docker/etc/httpd/global.conf +Include /opt/docker/etc/httpd/php.conf + + + Include /opt/docker/etc/httpd/conf.d/*.conf + += 2.4> + IncludeOptional /opt/docker/etc/httpd/conf.d/*.conf + +Include /opt/docker/etc/httpd/vhost.conf diff --git a/docker/php-apache/8.5/conf/etc/httpd/php.conf b/docker/php-apache/8.5/conf/etc/httpd/php.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/php.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-apache/8.5/conf/etc/httpd/ssl/server.crt b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.crt new file mode 100644 index 000000000..6b0694907 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE1DCCArwCCQDMMwGnSuK0tTANBgkqhkiG9w0BAQsFADAsMRswGQYDVQQKExJE +b2NrZXIgQm9pbGVycGxhdGUxDTALBgNVBAMUBCoudm0wHhcNMTUwNTA0MTcxNDQw +WhcNMjUwNTAxMTcxNDQwWjAsMRswGQYDVQQKExJEb2NrZXIgQm9pbGVycGxhdGUx +DTALBgNVBAMUBCoudm0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK +3TIUiyDvXelWeY9VXMrpjuZtYpVSDsACLpjFUhMnsP5/iKT0VbeZyqHvmwZjAg4G +Y10d+yZDdgv/xeu0HPOFbtR6pCp10d1tdLHZto5Cyuxu7IQsAVjnD6Ko7XFwtNk7 +9o6JZfAFaGL4w5MokrVmCtspnsMZH7/7zU4f96cbF39zLopnpuXGD6t6DA8Qj3gy +0duaTjs42bYRN+rwLzVKAev99iQ4kPMJn4vV6/Xk6rtoSzC67GQyVZYaFypicD1S +NtsRmgEVvjCBDbrLOneUiRwff6qxEsZi7Hxv7BKFj4iUWnII7K/nP7T6uBHQjHO+ +FpsGkU9lCMrCeVFBe8kKz/cbhd+yLUxXwAPr6gSOPmwn232Gy4tozvqZHpbUxsgx +7sT3ej9K66h1D7J+BjNFWYM1hbnC1r7H/xS7EBzBV8qRoQCVe08Juf5xsouXFakD +clLV4+L+1cxkpwsCQDly5g3tm/TBqA2O+ZJ+YHQDHKkzMyhLs6i0X/M5qvJBiLg1 +GLTCS20rpQ5gXTEGuINqHgwXQWkUO6bhgSYqdHGX3zbZ5+qWpI4eui3dHZ1Ll0VH +6Icpb7ORTQwhc6W8KBlybssYPSlGOEBGUjYGNheoz9FpoSkxCis+P8ZNKtrmpPoq +Su0eOOGFOFHG02eOgPVxSwrDeN9MVJo7BPysGMHJmQIDAQABMA0GCSqGSIb3DQEB +CwUAA4ICAQC63g6NHmQKbiy3G6iaDkpUSbr5Mq2YgU61XnvWVyREqDcy/BXCw9oY +SJ/KUvCpqPnACNOFqjadRAmPiA9nf2WduoCgwQGV/YRFGswSuVvh/3X2TX5NWvbS +t8MQDttQg1dxpiMUjlu3rqhfohBdWJvp2lVSdpDb/MOlXBc/+p7HfOHwhqB7wwPN +NNbSKUbZqZxmD8cOf1X0hASr1yfFPj+2vST3ESaON8S0T2p63YX/sD5jvOUiEuyw +I5WcvLmiRZA07SH8nWyckLY3qWL+OlhSZrlAnolWS00b+7h5LNuRYEjKzwVgntoA +aCopyQih6wIk0+AfJO4sfhJBmQhnIrAaP/zwBH5g9zVizLf5H7U+hNXrMwgw55Sq +vjMdkZHvPKUXTvVit/rYE9H+PY3brkRWzOl4V/i/ZLJJm5805H/NyTbz9kPMJw2Q +nn+KOpfXXySD39f8iuRgSKXsYNul38hxWgcZZ6g+sOOp2n/VUmf0eZUWNnJ8i7AP +4Qif7aDKMcibOwSwsB+DKZXDvZ5XSdnMphtuLS5rPSL81rVRmWC2DMfQ2eP8j0WN +VTroSk0xedQ7Qr+9TNooi9IyzX6n1a2S1UiciEZ3ZcDbXPl/P01m+IYZyPnLv0+9 +ZeioZYh1JLv3/OKsMrMLTfh2ZCj3aXwmc2Owi/wU2LS5QUOMcHH7CQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/php-apache/8.5/conf/etc/httpd/ssl/server.csr b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.csr new file mode 100644 index 000000000..8a9909f77 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEcTCCAlkCAQAwLDEbMBkGA1UEChMSRG9ja2VyIEJvaWxlcnBsYXRlMQ0wCwYD +VQQDFAQqLnZtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt0yFIsg +713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik9FW3mcqh75sGYwIOBmNdHfsm +Q3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyELAFY5w+iqO1xcLTZO/aOiWXw +BWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6KZ6blxg+regwPEI94MtHbmk47 +ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEswuuxkMlWWGhcqYnA9UjbbEZoB +Fb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpyCOyv5z+0+rgR0IxzvhabBpFP +ZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9hsuLaM76mR6W1MbIMe7E93o/ +SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEAlXtPCbn+cbKLlxWpA3JS1ePi +/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMoS7OotF/zOaryQYi4NRi0wktt +K6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efqlqSOHrot3R2dS5dFR+iHKW+z +kU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEpMQorPj/GTSra5qT6KkrtHjjh +hThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEAAaAAMA0GCSqGSIb3DQEBCwUA +A4ICAQBsEBgC2YepuZq/8UqvKMZKVy/etDKXj7BB+QPb+leNiKD7p4LDxHJsZSH8 +Ku9uMPeLfiQDn5jA41k5SlGttzvObd65RdEbO3yHpqsg05EGSDDLfaE1k2Al/qmX +/o8roPZF7+2kZthgMAgkcokS54LYqEYTGqOf3J9Ss0yRIZwhaOVebfFIbIOdpw0B +JNMIJPHTMdZrcuRVI+wR1uPLIlEJzBvxTGbTrvPU25WJFtu+EajKqXO0SHdy0yx8 +uH4ykRBJRc36+oYo7nZ5D56dh7pZn3+9J64FKAOV0Q3KqMFieGy053ezuhJd70eZ +UozTgfjs3WpMzoYmKETSyl3XZSdInRe+sUlKPruTsKyg69oYxjPlrGfAmmGcCFca +TnZinT18dI92zK7OtOVkmYeYKC1lwuhftVrNMXzZuHOGpS9NNYtc4nDqDMIEOfV3 +6rCdu03WjEgJ+Z67tJs16xOx9du4/EHxS2Ijn9DPfVJvYy0TgzDi1BUpjWx0KTLx +C4OQbEZ/QTWmHVbSch/hcZhzbf7SNh5RpnW4EtmcpDFjIKMfxJmoKeiTf7qnilx0 +7uRvsZFKoDKRDOFiPfgMg5AOtLHziYsd9m0tJjC2GHvFuPjzOtzhnUUjmmvht170 +2aqKakjST4amg7jzLcs871HX0/WjOtt29NpOz140blkKf1bisg== +-----END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/docker/php-apache/8.5/conf/etc/httpd/ssl/server.key b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.key new file mode 100644 index 000000000..c9eec145f --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/ssl/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAyt0yFIsg713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik +9FW3mcqh75sGYwIOBmNdHfsmQ3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyE +LAFY5w+iqO1xcLTZO/aOiWXwBWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6K +Z6blxg+regwPEI94MtHbmk47ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEsw +uuxkMlWWGhcqYnA9UjbbEZoBFb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpy +COyv5z+0+rgR0IxzvhabBpFPZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9 +hsuLaM76mR6W1MbIMe7E93o/SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEA +lXtPCbn+cbKLlxWpA3JS1ePi/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMo +S7OotF/zOaryQYi4NRi0wkttK6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efq +lqSOHrot3R2dS5dFR+iHKW+zkU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEp +MQorPj/GTSra5qT6KkrtHjjhhThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEA +AQKCAgAbZPdoUsllyZbC+LNkYZ19ILD5QIDNjfRb1xMGQmkXyQz1B+zOmeyrNfPc +OWEJabOfJTfj3pByN7SzG3US4333HNpQnW6mbmqqZ0HFFqPrXR/Ecuf+UUhCG5hp +m3bgM2vKbyccYsmg0VHcKfzrU7RvTTP/UNMjx2fThwvvwS+ttuSdF0HVcXJB5sfP +OWWnZNhkdHZlRf81VCED/jsZqCZYEh5eMyj9AoXvXL4zayPPf+tC0DSKaXW2Xlxg +tZQhqup8+a9nlxZia0Z9hu8clo6jXkiP8FuKgfCMV0cOjiCKLLHS5svTbLLsVWwJ +F2ZAdVcD6mWQ43qHOEK5NEzGvQKO14CaOLnVT2yAkMcyNohsEgoDP9oCBGDJQbBH +NmtZfpVjjtuTr9P9TEkU1FcBRo0x6Il/DkzamGbOeFAmgnaGElhJ5c/CAG7whaIf +mUfFOBGPH/wESY3gBOACDofeSh27RrlvbLaPiCGKivDUTBmhBsIuso6XqOKbvtfV +/HhhndpdRVfIj4DdE7gIrLIGN977JMVAXFCNz7KrvAWwcOXrCHCoWpklJ9repq8l +26ICY8K7VXktzDHQUmhd88ZWR+9ASURsJghUgZUOcMrEGyvci6Y8hpLhHiNVPHuQ ++ps7tpPsXSntBUqWBzhRZh74+nJlOOV6oYykl30JT2JzB6lwiQKCAQEA9ecn8N2z +20tR2UEiTv/MjVSepQtAAajegvcd1iasvvQKXnh3XLmoZHzH2tTa0lp5RIZpUQPl +lOTwko0lYTBnYblt65AJQ3FTgisNobIpoqE8BFXLm6wggz7CbabjmPGDe173lPGR +sI0YSKYvzrdn4zw8Fh6WULJyZHLi58zJYL3r0WBDiOoxpGaGA1GlmkuIWjhKHaX2 +OvF1vOuQDJ2eDyTc5TYFC0NKG76Mvanov5L/yrhNM/umbmp0SPspzHGZobAKUr20 +OazFT8S+2TA1OTxWNbiPbSimFoaZbEdqsNACGfVJWO8Sh8iqlt5RmEcSiSvGBj6L +QKprRO9Fsp2GawKCAQEA0zGhRsnux4JTNsdUSYsEJtITMj6eE+nl7CoZ9DAOwC5X +6/aSpUE4TT+pWNrt9iluXiGL0j89UJ7r/L1OcsiyzGb8ig9NU4zr1NIGTZ0DstHi +HPYINjeiBJEFIy17kOQn+9/I5c4hBUwz6ihwNoEomymVB/EsLJKAML0AudJGKg+Z +/f/qrS40eab5SAiaKgsh0MZnj+vIxyGBydt6r2HGmjfNITVbXIu6IpO+6NXDwM/e +7v10AAZ3j9+gb1RedLg2ghuIuYU90hmMhtVWsh9nVmaOkMW9/WFgOPYvt/mHH/hR +d4pePZ9kACGmqo/b9sHvHw1YEubtCt1VUiNuFxnJCwKCAQBWnxz0vkRTJY8phsY9 +KeK2jm5sGTBs5T2syLwb6ffENFdKvAjgAw6Mh2And/+1ReWd+/MxdLv03UjZdxsJ +x3FDfXx5FH4O4ebW3a+pnAcKoN1xcX+N0O6LDRqUYcue3sTAOs3gC9CUbr91KAWD +Phw8ccWAzTmKJ7IgLFA982ekyoI9eTmRC159WRgwJxy844qerWF+XC4GyXP+HsTZ +jNRW5Vdi7sqMEyIR7+fIEAhLI88zbATWIPmZv6pC4ybwO7wwtsCMMQNBpdjDprzL +6S12ggikV+U+QKlxGe0FtYqhykRTPJKf32eZqVheWOZJTA/9fgv9ux52oxGycM8O +gmsNAoIBAQC60m5uZnd5uYnPLWkcXYNgq/kbO1UvHHut/FhVMKX7z4MrU0XKNfWO +MECoP5K9bU0aq+Y6KIMe7FapjvT0iSHRu1Cu+HZY8JI2A0xcIAeDijLRl7sP6wrB +q1+2DKgANjRAlWfsEfoX658JBpitPngjOheBnRCMpVQMyUT5HE/BKWf5zwdUB0mY +S+K8nA90HcDeJIS8RcGolbVwUV0oBABhr/cf50lYhqozqCr7YQ33ZGs7Uq3oz8+4 +UARmN2YPLl3Znm3GX12em8c6B0LX8vvA7Jw06Rf2Ksup1+3Ce1PTLiEy9A4FyRf3 +Hc2HmBbnJAtZlr5QikMqlzzAmmLqwH6dAoIBAC+ryaQGJFsijCSuaDfRp/uy9xnd +DjgMdTwjl5WLBmyudChVMANl8eqCbvVO41CN84yORk03oQ4cx0eKxAZaLaSzgkb3 +W0X2nFQe7VJSYMQswCQ+1WfJvEFrIdkEKIa//uQdhqNrgUKSNVhhSTMbNEkDTIWn +ssbv2H9hvUaFt/J/vP9zCKuU5oYvNU7Oi6ZXRYezRn9atlJYanLFoJnHUBRzGms5 +K0vhdCPDXQq87z5Yudoh0jLUQF9Nx0GTWeBceQ9n5hZeRUNQWxP4AJThQX9KSPTS +mbL3Kh4XNRmAUJ2N+Njh+3dg91s+JkKvC1wcspLsmLPQe+9AxBSH9y5JE/8= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/php-apache/8.5/conf/etc/httpd/vhost.common.conf b/docker/php-apache/8.5/conf/etc/httpd/vhost.common.conf new file mode 100644 index 000000000..384696b4e --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/vhost.common.conf @@ -0,0 +1,7 @@ +# compatibility for PHP and TYPO3 Docker Boilerplate + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + diff --git a/docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/.gitkeep b/docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/01-boilerplate.conf b/docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/01-boilerplate.conf new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/vhost.common.d/01-boilerplate.conf @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-apache/8.5/conf/etc/httpd/vhost.conf b/docker/php-apache/8.5/conf/etc/httpd/vhost.conf new file mode 100644 index 000000000..c04a94318 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/vhost.conf @@ -0,0 +1,36 @@ +####################################### +# Vhost +####################################### + + + ServerName docker.vm + ServerAlias + DocumentRoot "" + + UseCanonicalName Off + + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + + + + + + ServerName docker.vm + ServerAlias + DocumentRoot "" + + UseCanonicalName Off + + + Include /opt/docker/etc/httpd/vhost.common.d/*.conf + + = 2.4> + IncludeOptional /opt/docker/etc/httpd/vhost.common.d/*.conf + + + Include /opt/docker/etc/httpd/vhost.ssl.conf + diff --git a/docker/php-apache/8.5/conf/etc/httpd/vhost.ssl.conf b/docker/php-apache/8.5/conf/etc/httpd/vhost.ssl.conf new file mode 100644 index 000000000..cf5fbc604 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/httpd/vhost.ssl.conf @@ -0,0 +1,26 @@ + ############ + # SSL + ############ + + SSLEngine on + SSLCertificateFile /opt/docker/etc/httpd/ssl/server.crt + SSLCertificateKeyFile /opt/docker/etc/httpd/ssl/server.key + + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + + BrowserMatch "MSIE [2-6]" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + # MSIE 7 and newer should be able to use keepalive + # This regexp is ok with 17-9! + BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown + + ## SSL Hardening + SSLProtocol All -SSLv2 -SSLv3 + SSLHonorCipherOrder on + SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA' diff --git a/docker/php-apache/8.5/conf/etc/supervisor.d/apache.conf b/docker/php-apache/8.5/conf/etc/supervisor.d/apache.conf new file mode 100644 index 000000000..12a6f86f7 --- /dev/null +++ b/docker/php-apache/8.5/conf/etc/supervisor.d/apache.conf @@ -0,0 +1,14 @@ +[group:apache] +programs=apached +priority=20 + +[program:apached] +command = /opt/docker/bin/service.d/httpd.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-apache/8.5/conf/provision/bootstrap.d/.gitkeep b/docker/php-apache/8.5/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5/conf/provision/bootstrap.d/10-apache.sh b/docker/php-apache/8.5/conf/provision/bootstrap.d/10-apache.sh new file mode 100644 index 000000000..e9feb08b4 --- /dev/null +++ b/docker/php-apache/8.5/conf/provision/bootstrap.d/10-apache.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) +IMAGE_DISTRIBUTION=$(docker-image-info dist) +IMAGE_DISTRIBUTION_VERSION=$(docker-image-info dist-version) +IMAGE_DISTRIBUTION_VERSION_MAIN=$(echo "$IMAGE_DISTRIBUTION_VERSION" | sed 's/^\([0-9]*\).*/\1/g') + +# Collect environment variables +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + APACHE_MAIN_PATH=/etc/apache2/ + APACHE_DOCKER_VHOST=/etc/apache2/sites-enabled/10-docker.conf + ;; + + RedHat) + APACHE_MAIN_PATH=/etc/httpd/ + APACHE_DOCKER_VHOST=/etc/httpd/conf.d/zzz-docker.conf + ;; + + Alpine) + APACHE_MAIN_PATH=/etc/apache2/ + APACHE_DOCKER_VHOST=/etc/apache2/conf.d/zzz-docker.conf + ;; +esac + +# Enable apache main config +ln -sf -- /opt/docker/etc/httpd/main.conf "$APACHE_DOCKER_VHOST" + +# Ensure /var/run/apache2 exists +mkdir -p -- "/var/run/apache2" + +if [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + mkdir -p -- "/run/apache2" +fi + +# Maintain lock directory +if [[ "$IMAGE_FAMILY" == "Debian" ]]; then + mkdir -p -- "/var/lock/apache2" + chmod 0750 -- "/var/lock/apache2" + chown www-data:www-data -- "/var/lock/apache2" +fi + +APACHE_CONF_FILES=$(find "$APACHE_MAIN_PATH" -type f -iname '*.conf' -o -iname 'default*' -o -iname '*log') + +# Change log to Docker stdout +go-replace --regex --regex-backrefs \ + -s '^[\s]*(CustomLog|ErrorLog|TransferLog) ([^\s]+)(.*)' -r '$1 /docker.stdout $3' \ + -s '^[\s]*(ErrorLog) ([^\s]+)(.*)' -r '$1 /docker.stderr $3' \ + --path="$APACHE_MAIN_PATH" \ + --path-regex='(.*\.conf|default.*|.*log)$' + +# Switch MPM to event +if [[ "$IMAGE_FAMILY" == "RedHat" ]]; then + go-replace --mode=line --regex --regex-backrefs \ + -s '^[\s#]*(LoadModule mpm_prefork_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule mpm_event_module.*)' -r '$1' \ + -- /etc/httpd/conf.modules.d/00-mpm.conf +fi + +if [[ "$IMAGE_DISTRIBUTION" == "Ubuntu" ]] && [[ "$IMAGE_DISTRIBUTION_VERSION_MAIN" -ge 14 ]]; then + a2enmod mpm_event +fi + +if [[ "$IMAGE_DISTRIBUTION" == "Debian" ]] && [[ "$IMAGE_DISTRIBUTION_VERSION_MAIN" -ge 8 ]]; then + a2enmod mpm_event +fi + +if [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + go-replace --mode=line --regex --regex-backrefs \ + -s '^[\s#]*(LoadModule mpm_prefork_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule mpm_event_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule deflate_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule rewrite_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule logio_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule slotmem_shm_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule actions_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule expires_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule ssl_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule socache_shmcb_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_ajp_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_connect_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_balancer_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_express_module.*)' -r '#$1' \ + -s '^[\s#]*(LoadModule proxy_fcgi_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_fdpass_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_ftp_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_http_module.*)' -r '$1' \ + -s '^[\s#]*(LoadModule proxy_scgi_module.*)' -r '$1' \ + -- /etc/apache2/httpd.conf \ + /etc/apache2/conf.d/ssl.conf \ + /etc/apache2/conf.d/proxy.conf + + # Remove default vhost + sed -i -e '1h;2,$H;$!d;g' -e 's//#-> removed vhost/g' /etc/apache2/conf.d/ssl.conf +fi + +# Fix rights of ssl files +chown -R root:root /opt/docker/etc/httpd/ssl +find /opt/docker/etc/httpd/ssl -type d -exec chmod 750 {} \; +find /opt/docker/etc/httpd/ssl -type f -exec chmod 640 {} \; diff --git a/docker/php-apache/8.5/conf/provision/bootstrap.d/10-php.sh b/docker/php-apache/8.5/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..c8669ca25 --- /dev/null +++ b/docker/php-apache/8.5/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Restrict php-fpm to local connection +go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 127.0.0.1:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + diff --git a/docker/php-apache/8.5/conf/provision/entrypoint.d/.gitkeep b/docker/php-apache/8.5/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-apache/8.5/conf/provision/entrypoint.d/20-apache.sh b/docker/php-apache/8.5/conf/provision/entrypoint.d/20-apache.sh new file mode 100644 index 000000000..42ef48932 --- /dev/null +++ b/docker/php-apache/8.5/conf/provision/entrypoint.d/20-apache.sh @@ -0,0 +1,16 @@ +# Replace markers +go-replace \ + -s "" -r "$WEB_DOCUMENT_INDEX" \ + -s "" -r "$WEB_DOCUMENT_ROOT" \ + -s "" -r "$WEB_ALIAS_DOMAIN" \ + -s "" -r "$HOSTNAME" \ + -s "" -r "$WEB_PHP_SOCKET" \ + -s "" -r "$WEB_PHP_TIMEOUT" \ + --path=/opt/docker/etc/httpd/ \ + --path-pattern='*.conf' \ + --ignore-empty + +if [[ -z "$WEB_PHP_SOCKET" ]]; then + ## WEB_PHP_SOCKET is not set, remove PHP files + rm -f -- /opt/docker/etc/httpd/conf.d/10-php.conf +fi diff --git a/docker/php-dev/8.5-alpine/Dockerfile b/docker/php-dev/8.5-alpine/Dockerfile new file mode 100644 index 000000000..b6c94d659 --- /dev/null +++ b/docker/php-dev/8.5-alpine/Dockerfile @@ -0,0 +1,30 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-dev:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5-alpine + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && apk-install \ + linux-headers \ + make \ + autoconf \ + g++ \ + && pecl install xdebug \ + && apk del -f --purge \ + autoconf \ + linux-headers \ + g++ \ + make \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap diff --git a/docker/php-dev/8.5-alpine/Dockerfile.jinja2 b/docker/php-dev/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..48b55c891 --- /dev/null +++ b/docker/php-dev/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,7 @@ +{{ docker.from("php", "8.5-alpine") }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopmentAlpine(version="8.5") }} \ + {{ provision.runBootstrap() }} diff --git a/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh b/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-dev/8.5-alpine/conf/bin/service.d/ssh.d/99-development.sh b/docker/php-dev/8.5-alpine/conf/bin/service.d/ssh.d/99-development.sh new file mode 100644 index 000000000..2502ab3e3 --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/bin/service.d/ssh.d/99-development.sh @@ -0,0 +1,3 @@ + +# Allow root access via ssh +go-replace --mode=lineinfile -s 'PermitRootLogin' -r 'PermitRootLogin yes' -- /etc/ssh/sshd_config diff --git a/docker/php-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/99-development.sh b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/99-development.sh new file mode 100644 index 000000000..7fc8cca55 --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/bootstrap.d/99-development.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Set passwords to "dev" +echo "$APPLICATION_USER":"dev" | chpasswd +echo "root":"dev" | chpasswd diff --git a/docker/php-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-dev/8.5/Dockerfile b/docker/php-dev/8.5/Dockerfile new file mode 100644 index 000000000..d8e74c867 --- /dev/null +++ b/docker/php-dev/8.5/Dockerfile @@ -0,0 +1,24 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-dev:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5 + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ + && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ + && apt-install tideways-php tideways-daemon \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap \ + && docker-image-cleanup diff --git a/docker/php-dev/8.5/Dockerfile.jinja2 b/docker/php-dev/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..fd32f4ad6 --- /dev/null +++ b/docker/php-dev/8.5/Dockerfile.jinja2 @@ -0,0 +1,8 @@ +{{ docker.from("php", "8.5") }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopment(version="8.5") }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} diff --git a/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.sh b/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-dev/8.5/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-dev/8.5/conf/bin/service.d/ssh.d/99-development.sh b/docker/php-dev/8.5/conf/bin/service.d/ssh.d/99-development.sh new file mode 100644 index 000000000..2502ab3e3 --- /dev/null +++ b/docker/php-dev/8.5/conf/bin/service.d/ssh.d/99-development.sh @@ -0,0 +1,3 @@ + +# Allow root access via ssh +go-replace --mode=lineinfile -s 'PermitRootLogin' -r 'PermitRootLogin yes' -- /etc/ssh/sshd_config diff --git a/docker/php-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-dev/8.5/conf/provision/bootstrap.d/10-php.sh b/docker/php-dev/8.5/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-dev/8.5/conf/provision/bootstrap.d/99-development.sh b/docker/php-dev/8.5/conf/provision/bootstrap.d/99-development.sh new file mode 100644 index 000000000..7fc8cca55 --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/bootstrap.d/99-development.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Set passwords to "dev" +echo "$APPLICATION_USER":"dev" | chpasswd +echo "root":"dev" | chpasswd diff --git a/docker/php-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-nginx-dev/8.5-alpine/Dockerfile b/docker/php-nginx-dev/8.5-alpine/Dockerfile new file mode 100644 index 000000000..c10f3d35b --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/Dockerfile @@ -0,0 +1,38 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-nginx-dev:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php-nginx:8.5-alpine + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && apk-install \ + linux-headers \ + make \ + autoconf \ + g++ \ + && pecl install xdebug \ + && apk del -f --purge \ + autoconf \ + linux-headers \ + g++ \ + make \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap diff --git a/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 b/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..42ca5751a --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,11 @@ +{{ docker.from("php-nginx", "8.5-alpine") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.webDevelopment() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopmentAlpine(version="8.2") }} \ + {{ provision.runBootstrap() }} diff --git a/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh b/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/conf.d/02-dev.conf b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/conf.d/02-dev.conf new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/conf.d/02-dev.conf @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/02-dev.conf b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/02-dev.conf new file mode 100644 index 000000000..4f80ec9d3 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/02-dev.conf @@ -0,0 +1,6 @@ +location ~* { + expires off; + add_header Cache-Control private; + + try_files $uri $uri/ /?$query_string; +} diff --git a/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf new file mode 100644 index 000000000..a2cd929e7 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf @@ -0,0 +1,2 @@ +access_log /docker.stdout; +error_log /docker.stderr info; diff --git a/docker/php-nginx-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-nginx-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/.gitkeep b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh new file mode 100644 index 000000000..b6100c8f1 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable sendfile for nginx (eg. nfs usage) +go-replace --mode=lineinfile --regex \ + -s '^[\s#]*(sendfile)' -r 'sendfile off;' \ + -- /etc/nginx/nginx.conf diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/20-nginx-dev.sh b/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/20-nginx-dev.sh new file mode 100644 index 000000000..f4695f059 --- /dev/null +++ b/docker/php-nginx-dev/8.5-alpine/conf/provision/entrypoint.d/20-nginx-dev.sh @@ -0,0 +1,7 @@ +go-replace \ + -s "" \ + -r "$WEB_NO_CACHE_PATTERN" \ + --path=/opt/docker/etc/nginx/ \ + --path-pattern='*.conf' \ + --ignore-empty + diff --git a/docker/php-nginx-dev/8.5/Dockerfile b/docker/php-nginx-dev/8.5/Dockerfile new file mode 100644 index 000000000..622a121a2 --- /dev/null +++ b/docker/php-nginx-dev/8.5/Dockerfile @@ -0,0 +1,32 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-nginx-dev:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php-nginx:8.5 + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV WEB_NO_CACHE_PATTERN="\.(css|js|gif|png|jpg|svg|json|xml)$" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install development environment + && BLACKFIRE_INSTALL_METHOD=raw bash -c "$(curl -L https://installer.blackfire.io/installer.sh)" \ + && blackfire php:install \ + && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ + && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ + && apt-install tideways-php tideways-daemon \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + # Enable php development services + && docker-service enable syslog \ + && docker-service enable postfix \ + && docker-service enable ssh \ + && docker-run-bootstrap \ + && docker-image-cleanup diff --git a/docker/php-nginx-dev/8.5/Dockerfile.jinja2 b/docker/php-nginx-dev/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..b9e413ae3 --- /dev/null +++ b/docker/php-nginx-dev/8.5/Dockerfile.jinja2 @@ -0,0 +1,12 @@ +{{ docker.from("php-nginx", "8.5") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.webDevelopment() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ php.officialDevelopment(version="8.5") }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} diff --git a/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh b/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.sh b/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.sh new file mode 100644 index 000000000..95daa01ae --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/bin/service.d/blackfire-agent.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_BLACKFIRE_AGENT_OPTS" ]]; then SERVICE_BLACKFIRE_AGENT_OPTS=""; fi + +source /opt/docker/bin/config.sh + +BLACKFIRE_ARGS="" + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +# blackfire.server_id +if [[ -n "${BLACKFIRE_SERVER_ID+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-id=\"${BLACKFIRE_SERVER_ID}\"" +fi + +# blackfire.server_token +if [[ -n "${BLACKFIRE_SERVER_TOKEN+x}" ]]; then + BLACKFIRE_ARGS="$BLACKFIRE_ARGS --server-token=\"${BLACKFIRE_SERVER_TOKEN}\"" +fi + +# create directory for unix socket +mkdir -p /var/run/blackfire + +eval exec blackfire-agent $BLACKFIRE_ARGS $SERVICE_BLACKFIRE_AGENT_OPTS diff --git a/docker/php-nginx-dev/8.5/conf/etc/nginx/conf.d/02-dev.conf b/docker/php-nginx-dev/8.5/conf/etc/nginx/conf.d/02-dev.conf new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/etc/nginx/conf.d/02-dev.conf @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/.gitkeep b/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/02-dev.conf b/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/02-dev.conf new file mode 100644 index 000000000..4f80ec9d3 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/02-dev.conf @@ -0,0 +1,6 @@ +location ~* { + expires off; + add_header Cache-Control private; + + try_files $uri $uri/ /?$query_string; +} diff --git a/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/10-log.conf b/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/10-log.conf new file mode 100644 index 000000000..a2cd929e7 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/etc/nginx/vhost.common.d/10-log.conf @@ -0,0 +1,2 @@ +access_log /docker.stdout; +error_log /docker.stderr info; diff --git a/docker/php-nginx-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf b/docker/php-nginx-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf new file mode 100644 index 000000000..897831ddb --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/etc/supervisor.d/blackfire-agent.conf @@ -0,0 +1,14 @@ +[group:blackfire-agent] +programs=blackfire-agentd +priority=25 + +[program:blackfire-agentd] +command = /opt/docker/bin/service.d/blackfire-agent.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/.gitkeep b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-nginx.sh b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-nginx.sh new file mode 100644 index 000000000..b6100c8f1 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-nginx.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable sendfile for nginx (eg. nfs usage) +go-replace --mode=lineinfile --regex \ + -s '^[\s#]*(sendfile)' -r 'sendfile off;' \ + -- /etc/nginx/nginx.conf diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-php.sh b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..852567f85 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) + +# Configure php-fpm +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "%R - %u %t \"%m %r%Q%q\" %s %f cpu:%C%% mem:%{megabytes}M reqTime:%d"' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf \ + /opt/docker/etc/php/fpm/php-fpm.conf + +fi diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh new file mode 100644 index 000000000..f4ea7f72e --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-blackfire.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# Disable blackfire by default +rm -f \ + /etc/php5/cli/conf.d/zz-blackfire.ini \ + /etc/php5/fpm/conf.d/zz-blackfire.ini diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh new file mode 100644 index 000000000..079e59fdf --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-opcache.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Configure opcache for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*opcache.memory_consumption[\s]*=' -r 'opcache.memory_consumption = 256' \ + -s '^[\s;]*opcache.validate_timestamps[\s]*=' -r 'opcache.validate_timestamps = 1' \ + -s '^[\s;]*opcache.revalidate_freq[\s]*=' -r 'opcache.revalidate_freq = 0' \ + -s '^[\s;]*opcache.interned_strings_buffer[\s]*=' -r 'opcache.interned_strings_buffer = 16' \ + -s '^[\s;]*opcache.max_accelerated_files[\s]*=' -r 'opcache.max_accelerated_files = 7963' \ + -s '^[\s;]*opcache.fast_shutdown[\s]*=' -r 'opcache.fast_shutdown = 1' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh new file mode 100644 index 000000000..e76310003 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/bootstrap.d/20-php-module-xdebug.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Alpine) + # Fix php xdebug module [Alpine family] + + if [[ -f "/etc/php5/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php5/conf.d/xdebug.ini + fi + + if [[ -f "/etc/php7/conf.d/xdebug.ini" ]]; then + go-replace --mode=lineinfile \ + -s '^extension=xdebug.so' -r 'zend_extension=xdebug.so' \ + /etc/php7/conf.d/xdebug.ini + fi + + ;; +esac + +# Configure xdebug for development +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*xdebug.mode[\s]*=' -r 'xdebug.mode = debug' \ + -s '^[\s;]*xdebug.discover_client_host[\s]*=' -r 'xdebug.discover_client_host = 1' \ + -s '^[\s;]*xdebug.idekey[\s]*=' -r 'xdebug.idekey = docker' \ + -s '^[\s;]*xdebug.cli_color[\s]*=' -r 'xdebug.cli_color = 1' \ + -s '^[\s;]*xdebug.max_nesting_level[\s]*=' -r 'xdebug.max_nesting_level = 1000' \ + -s '^[\s;]*xdebug.start_with_request[\s]*=' -r 'xdebug.start_with_request = trigger' \ + -s '^[\s;]*xdebug.output_dir[\s]*=' -r 'xdebug.output_dir = /tmp/debug' \ + -- /opt/docker/etc/php/php.webdevops.ini diff --git a/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh b/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh new file mode 100644 index 000000000..7b392587c --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/10-php-debugger.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +################################################# +# Debugger switch +################################################# + +PHP_CONF_PATHS=" +/etc/php5/conf.d +/etc/php7/conf.d +/etc/php.d +/etc/php5/mods-available +/etc/php5/cli/conf.d +/etc/php5/cli/conf.d +/etc/php5/fpm/conf.d +/etc/php5/fpm/conf.d +/etc/php/7.0/mods-available +/etc/php/7.1/mods-available +/etc/php/7.2/mods-available +/etc/php/7.3/mods-available +/etc/php/7.4/mods-available +/etc/php/7.0/cli/conf.d +/etc/php/7.1/cli/conf.d +/etc/php/7.2/cli/conf.d +/etc/php/7.3/cli/conf.d +/etc/php/7.4/cli/conf.d +/etc/php/7.0/fpm/conf.d +/etc/php/7.1/fpm/conf.d +/etc/php/7.2/fpm/conf.d +/etc/php/7.3/fpm/conf.d +/etc/php/7.4/fpm/conf.d +/usr/local/etc/php/conf.d/" + +function phpModuleRemove() { + if [ "$#" -ne 1 ]; then + echo "You must specify the name of the PHP module which you want to disable" + exit 1 + fi + + echo " - Removing PHP module ${1}" + for CONF_PATH in $PHP_CONF_PATHS; do + rm -f "${CONF_PATH}"/*"${1}".ini + done +} + + +if [[ -n "${PHP_DEBUGGER+x}" ]]; then + case "$PHP_DEBUGGER" in + xdebug) + echo "PHP-Debugger: Xdebug enabled" + phpModuleRemove "blackfire" + ;; + + blackfire) + echo "PHP-Debugger: Blackfire enabled" + phpModuleRemove "xdebug" + docker-service-enable blackfire-agent + ;; + + none) + echo "PHP-Debugger: none" + phpModuleRemove "blackfire" + phpModuleRemove "xdebug" + ;; + esac + +else + + echo "PHP-Debugger: not specified - default is xdebug" + phpModuleRemove "blackfire" + +fi + +################################################# +# PHP debugger environment variables +################################################# + +function phpEnvironmentVariable() { + PHP_INI_KEY="$1" + PHP_ENV_NAME="$2" + + if [[ -n "${!PHP_ENV_NAME+x}" ]]; then + PHP_ENV_VALUE="${!PHP_ENV_NAME}" + echo "${PHP_INI_KEY}=\"${PHP_ENV_VALUE}\"" >> /opt/docker/etc/php/php.ini + fi +} + +################### +# XDEBUG +################### + +# xdebug3 remote debugger +phpEnvironmentVariable "xdebug.discover_client_host" "XDEBUG_DISCOVER_CLIENT_HOST" +phpEnvironmentVariable "xdebug.mode" "XDEBUG_MODE" +phpEnvironmentVariable "xdebug.start_with_request" "XDEBUG_START_WITH_REQUEST" +phpEnvironmentVariable "xdebug.client_host" "XDEBUG_CLIENT_HOST" +phpEnvironmentVariable "xdebug.client_port" "XDEBUG_CLIENT_PORT" + +# xdebug3 profiler +phpEnvironmentVariable "xdebug.trigger_value" "XDEBUG_TRIGGER_VALUE" +phpEnvironmentVariable "xdebug.output_dir" "XDEBUG_OUTPUT_DIR" + +################### +# BLACKFIRE +################### +phpEnvironmentVariable "blackfire.server_id" "BLACKFIRE_SERVER_ID" +phpEnvironmentVariable "blackfire.server_token" "BLACKFIRE_SERVER_TOKEN" diff --git a/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/20-nginx-dev.sh b/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/20-nginx-dev.sh new file mode 100644 index 000000000..f4695f059 --- /dev/null +++ b/docker/php-nginx-dev/8.5/conf/provision/entrypoint.d/20-nginx-dev.sh @@ -0,0 +1,7 @@ +go-replace \ + -s "" \ + -r "$WEB_NO_CACHE_PATTERN" \ + --path=/opt/docker/etc/nginx/ \ + --path-pattern='*.conf' \ + --ignore-empty + diff --git a/docker/php-nginx/8.5-alpine/Dockerfile b/docker/php-nginx/8.5-alpine/Dockerfile new file mode 100644 index 000000000..6c00ffcf8 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/Dockerfile @@ -0,0 +1,24 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-nginx:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5-alpine + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV SERVICE_NGINX_CLIENT_MAX_BODY_SIZE="50m" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install nginx + && apk-install \ + nginx \ + && docker-run-bootstrap + +EXPOSE 80 443 diff --git a/docker/php-nginx/8.5-alpine/Dockerfile.jinja2 b/docker/php-nginx/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..ed91b9f30 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,13 @@ +{{ docker.from("php", "8.5-alpine") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.nginx() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ nginx.alpine() }} \ + {{ provision.runBootstrap() }} + +{{ docker.expose('80 443') }} diff --git a/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.d/10-init.sh b/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.d/10-init.sh new file mode 100644 index 000000000..8acb5111d --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.d/10-init.sh @@ -0,0 +1,5 @@ +if [[ ! -e "$WEB_DOCUMENT_ROOT" ]]; then + echo "" + echo "[WARNING] WEB_DOCUMENT_ROOT does not exists with path \"$WEB_DOCUMENT_ROOT\"!" + echo "" +fi diff --git a/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.sh b/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.sh new file mode 100644 index 000000000..3517c72a5 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/bin/service.d/nginx.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_NGINX_OPTS" ]]; then SERVICE_NGINX_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/nginx.d/" + +exec /usr/sbin/nginx -g 'daemon off;' $SERVICE_NGINX_OPTS diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/.gitkeep b/docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/10-php.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/10-php.conf new file mode 100644 index 000000000..9abe45f0a --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/conf.d/10-php.conf @@ -0,0 +1,3 @@ +upstream php { + server ; +} diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/global.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/global.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/global.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/main.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/main.conf new file mode 100644 index 000000000..06de0651b --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/main.conf @@ -0,0 +1,4 @@ +include /opt/docker/etc/nginx/global.conf; +include /opt/docker/etc/nginx/php.conf; +include /opt/docker/etc/nginx/conf.d/*.conf; +include /opt/docker/etc/nginx/vhost.conf; diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/nginx.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/nginx.conf new file mode 100644 index 000000000..b9cb4ebc4 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/nginx.conf @@ -0,0 +1,34 @@ +# For more information on configuration, see: +# * Official English Documentation: http://nginx.org/en/docs/ +# * Official Russian Documentation: http://nginx.org/ru/docs/ + +user nginx; +worker_processes auto; +error_log /docker.stdout; +pid /run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + 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 /docker.stdout main; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Load modular configuration files from the /etc/nginx/conf.d directory. + # See http://nginx.org/en/docs/ngx_core_module.html#include + # for more information. + include /etc/nginx/conf.d/*.conf; +} diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/php.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/php.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/php.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.crt b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.crt new file mode 100644 index 000000000..6b0694907 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE1DCCArwCCQDMMwGnSuK0tTANBgkqhkiG9w0BAQsFADAsMRswGQYDVQQKExJE +b2NrZXIgQm9pbGVycGxhdGUxDTALBgNVBAMUBCoudm0wHhcNMTUwNTA0MTcxNDQw +WhcNMjUwNTAxMTcxNDQwWjAsMRswGQYDVQQKExJEb2NrZXIgQm9pbGVycGxhdGUx +DTALBgNVBAMUBCoudm0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK +3TIUiyDvXelWeY9VXMrpjuZtYpVSDsACLpjFUhMnsP5/iKT0VbeZyqHvmwZjAg4G +Y10d+yZDdgv/xeu0HPOFbtR6pCp10d1tdLHZto5Cyuxu7IQsAVjnD6Ko7XFwtNk7 +9o6JZfAFaGL4w5MokrVmCtspnsMZH7/7zU4f96cbF39zLopnpuXGD6t6DA8Qj3gy +0duaTjs42bYRN+rwLzVKAev99iQ4kPMJn4vV6/Xk6rtoSzC67GQyVZYaFypicD1S +NtsRmgEVvjCBDbrLOneUiRwff6qxEsZi7Hxv7BKFj4iUWnII7K/nP7T6uBHQjHO+ +FpsGkU9lCMrCeVFBe8kKz/cbhd+yLUxXwAPr6gSOPmwn232Gy4tozvqZHpbUxsgx +7sT3ej9K66h1D7J+BjNFWYM1hbnC1r7H/xS7EBzBV8qRoQCVe08Juf5xsouXFakD +clLV4+L+1cxkpwsCQDly5g3tm/TBqA2O+ZJ+YHQDHKkzMyhLs6i0X/M5qvJBiLg1 +GLTCS20rpQ5gXTEGuINqHgwXQWkUO6bhgSYqdHGX3zbZ5+qWpI4eui3dHZ1Ll0VH +6Icpb7ORTQwhc6W8KBlybssYPSlGOEBGUjYGNheoz9FpoSkxCis+P8ZNKtrmpPoq +Su0eOOGFOFHG02eOgPVxSwrDeN9MVJo7BPysGMHJmQIDAQABMA0GCSqGSIb3DQEB +CwUAA4ICAQC63g6NHmQKbiy3G6iaDkpUSbr5Mq2YgU61XnvWVyREqDcy/BXCw9oY +SJ/KUvCpqPnACNOFqjadRAmPiA9nf2WduoCgwQGV/YRFGswSuVvh/3X2TX5NWvbS +t8MQDttQg1dxpiMUjlu3rqhfohBdWJvp2lVSdpDb/MOlXBc/+p7HfOHwhqB7wwPN +NNbSKUbZqZxmD8cOf1X0hASr1yfFPj+2vST3ESaON8S0T2p63YX/sD5jvOUiEuyw +I5WcvLmiRZA07SH8nWyckLY3qWL+OlhSZrlAnolWS00b+7h5LNuRYEjKzwVgntoA +aCopyQih6wIk0+AfJO4sfhJBmQhnIrAaP/zwBH5g9zVizLf5H7U+hNXrMwgw55Sq +vjMdkZHvPKUXTvVit/rYE9H+PY3brkRWzOl4V/i/ZLJJm5805H/NyTbz9kPMJw2Q +nn+KOpfXXySD39f8iuRgSKXsYNul38hxWgcZZ6g+sOOp2n/VUmf0eZUWNnJ8i7AP +4Qif7aDKMcibOwSwsB+DKZXDvZ5XSdnMphtuLS5rPSL81rVRmWC2DMfQ2eP8j0WN +VTroSk0xedQ7Qr+9TNooi9IyzX6n1a2S1UiciEZ3ZcDbXPl/P01m+IYZyPnLv0+9 +ZeioZYh1JLv3/OKsMrMLTfh2ZCj3aXwmc2Owi/wU2LS5QUOMcHH7CQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.csr b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.csr new file mode 100644 index 000000000..8a9909f77 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEcTCCAlkCAQAwLDEbMBkGA1UEChMSRG9ja2VyIEJvaWxlcnBsYXRlMQ0wCwYD +VQQDFAQqLnZtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt0yFIsg +713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik9FW3mcqh75sGYwIOBmNdHfsm +Q3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyELAFY5w+iqO1xcLTZO/aOiWXw +BWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6KZ6blxg+regwPEI94MtHbmk47 +ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEswuuxkMlWWGhcqYnA9UjbbEZoB +Fb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpyCOyv5z+0+rgR0IxzvhabBpFP +ZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9hsuLaM76mR6W1MbIMe7E93o/ +SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEAlXtPCbn+cbKLlxWpA3JS1ePi +/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMoS7OotF/zOaryQYi4NRi0wktt +K6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efqlqSOHrot3R2dS5dFR+iHKW+z +kU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEpMQorPj/GTSra5qT6KkrtHjjh +hThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEAAaAAMA0GCSqGSIb3DQEBCwUA +A4ICAQBsEBgC2YepuZq/8UqvKMZKVy/etDKXj7BB+QPb+leNiKD7p4LDxHJsZSH8 +Ku9uMPeLfiQDn5jA41k5SlGttzvObd65RdEbO3yHpqsg05EGSDDLfaE1k2Al/qmX +/o8roPZF7+2kZthgMAgkcokS54LYqEYTGqOf3J9Ss0yRIZwhaOVebfFIbIOdpw0B +JNMIJPHTMdZrcuRVI+wR1uPLIlEJzBvxTGbTrvPU25WJFtu+EajKqXO0SHdy0yx8 +uH4ykRBJRc36+oYo7nZ5D56dh7pZn3+9J64FKAOV0Q3KqMFieGy053ezuhJd70eZ +UozTgfjs3WpMzoYmKETSyl3XZSdInRe+sUlKPruTsKyg69oYxjPlrGfAmmGcCFca +TnZinT18dI92zK7OtOVkmYeYKC1lwuhftVrNMXzZuHOGpS9NNYtc4nDqDMIEOfV3 +6rCdu03WjEgJ+Z67tJs16xOx9du4/EHxS2Ijn9DPfVJvYy0TgzDi1BUpjWx0KTLx +C4OQbEZ/QTWmHVbSch/hcZhzbf7SNh5RpnW4EtmcpDFjIKMfxJmoKeiTf7qnilx0 +7uRvsZFKoDKRDOFiPfgMg5AOtLHziYsd9m0tJjC2GHvFuPjzOtzhnUUjmmvht170 +2aqKakjST4amg7jzLcs871HX0/WjOtt29NpOz140blkKf1bisg== +-----END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.key b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.key new file mode 100644 index 000000000..c9eec145f --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/ssl/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAyt0yFIsg713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik +9FW3mcqh75sGYwIOBmNdHfsmQ3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyE +LAFY5w+iqO1xcLTZO/aOiWXwBWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6K +Z6blxg+regwPEI94MtHbmk47ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEsw +uuxkMlWWGhcqYnA9UjbbEZoBFb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpy +COyv5z+0+rgR0IxzvhabBpFPZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9 +hsuLaM76mR6W1MbIMe7E93o/SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEA +lXtPCbn+cbKLlxWpA3JS1ePi/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMo +S7OotF/zOaryQYi4NRi0wkttK6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efq +lqSOHrot3R2dS5dFR+iHKW+zkU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEp +MQorPj/GTSra5qT6KkrtHjjhhThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEA +AQKCAgAbZPdoUsllyZbC+LNkYZ19ILD5QIDNjfRb1xMGQmkXyQz1B+zOmeyrNfPc +OWEJabOfJTfj3pByN7SzG3US4333HNpQnW6mbmqqZ0HFFqPrXR/Ecuf+UUhCG5hp +m3bgM2vKbyccYsmg0VHcKfzrU7RvTTP/UNMjx2fThwvvwS+ttuSdF0HVcXJB5sfP +OWWnZNhkdHZlRf81VCED/jsZqCZYEh5eMyj9AoXvXL4zayPPf+tC0DSKaXW2Xlxg +tZQhqup8+a9nlxZia0Z9hu8clo6jXkiP8FuKgfCMV0cOjiCKLLHS5svTbLLsVWwJ +F2ZAdVcD6mWQ43qHOEK5NEzGvQKO14CaOLnVT2yAkMcyNohsEgoDP9oCBGDJQbBH +NmtZfpVjjtuTr9P9TEkU1FcBRo0x6Il/DkzamGbOeFAmgnaGElhJ5c/CAG7whaIf +mUfFOBGPH/wESY3gBOACDofeSh27RrlvbLaPiCGKivDUTBmhBsIuso6XqOKbvtfV +/HhhndpdRVfIj4DdE7gIrLIGN977JMVAXFCNz7KrvAWwcOXrCHCoWpklJ9repq8l +26ICY8K7VXktzDHQUmhd88ZWR+9ASURsJghUgZUOcMrEGyvci6Y8hpLhHiNVPHuQ ++ps7tpPsXSntBUqWBzhRZh74+nJlOOV6oYykl30JT2JzB6lwiQKCAQEA9ecn8N2z +20tR2UEiTv/MjVSepQtAAajegvcd1iasvvQKXnh3XLmoZHzH2tTa0lp5RIZpUQPl +lOTwko0lYTBnYblt65AJQ3FTgisNobIpoqE8BFXLm6wggz7CbabjmPGDe173lPGR +sI0YSKYvzrdn4zw8Fh6WULJyZHLi58zJYL3r0WBDiOoxpGaGA1GlmkuIWjhKHaX2 +OvF1vOuQDJ2eDyTc5TYFC0NKG76Mvanov5L/yrhNM/umbmp0SPspzHGZobAKUr20 +OazFT8S+2TA1OTxWNbiPbSimFoaZbEdqsNACGfVJWO8Sh8iqlt5RmEcSiSvGBj6L +QKprRO9Fsp2GawKCAQEA0zGhRsnux4JTNsdUSYsEJtITMj6eE+nl7CoZ9DAOwC5X +6/aSpUE4TT+pWNrt9iluXiGL0j89UJ7r/L1OcsiyzGb8ig9NU4zr1NIGTZ0DstHi +HPYINjeiBJEFIy17kOQn+9/I5c4hBUwz6ihwNoEomymVB/EsLJKAML0AudJGKg+Z +/f/qrS40eab5SAiaKgsh0MZnj+vIxyGBydt6r2HGmjfNITVbXIu6IpO+6NXDwM/e +7v10AAZ3j9+gb1RedLg2ghuIuYU90hmMhtVWsh9nVmaOkMW9/WFgOPYvt/mHH/hR +d4pePZ9kACGmqo/b9sHvHw1YEubtCt1VUiNuFxnJCwKCAQBWnxz0vkRTJY8phsY9 +KeK2jm5sGTBs5T2syLwb6ffENFdKvAjgAw6Mh2And/+1ReWd+/MxdLv03UjZdxsJ +x3FDfXx5FH4O4ebW3a+pnAcKoN1xcX+N0O6LDRqUYcue3sTAOs3gC9CUbr91KAWD +Phw8ccWAzTmKJ7IgLFA982ekyoI9eTmRC159WRgwJxy844qerWF+XC4GyXP+HsTZ +jNRW5Vdi7sqMEyIR7+fIEAhLI88zbATWIPmZv6pC4ybwO7wwtsCMMQNBpdjDprzL +6S12ggikV+U+QKlxGe0FtYqhykRTPJKf32eZqVheWOZJTA/9fgv9ux52oxGycM8O +gmsNAoIBAQC60m5uZnd5uYnPLWkcXYNgq/kbO1UvHHut/FhVMKX7z4MrU0XKNfWO +MECoP5K9bU0aq+Y6KIMe7FapjvT0iSHRu1Cu+HZY8JI2A0xcIAeDijLRl7sP6wrB +q1+2DKgANjRAlWfsEfoX658JBpitPngjOheBnRCMpVQMyUT5HE/BKWf5zwdUB0mY +S+K8nA90HcDeJIS8RcGolbVwUV0oBABhr/cf50lYhqozqCr7YQ33ZGs7Uq3oz8+4 +UARmN2YPLl3Znm3GX12em8c6B0LX8vvA7Jw06Rf2Ksup1+3Ce1PTLiEy9A4FyRf3 +Hc2HmBbnJAtZlr5QikMqlzzAmmLqwH6dAoIBAC+ryaQGJFsijCSuaDfRp/uy9xnd +DjgMdTwjl5WLBmyudChVMANl8eqCbvVO41CN84yORk03oQ4cx0eKxAZaLaSzgkb3 +W0X2nFQe7VJSYMQswCQ+1WfJvEFrIdkEKIa//uQdhqNrgUKSNVhhSTMbNEkDTIWn +ssbv2H9hvUaFt/J/vP9zCKuU5oYvNU7Oi6ZXRYezRn9atlJYanLFoJnHUBRzGms5 +K0vhdCPDXQq87z5Yudoh0jLUQF9Nx0GTWeBceQ9n5hZeRUNQWxP4AJThQX9KSPTS +mbL3Kh4XNRmAUJ2N+Njh+3dg91s+JkKvC1wcspLsmLPQe+9AxBSH9y5JE/8= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.conf new file mode 100644 index 000000000..a5df62ef8 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.conf @@ -0,0 +1,2 @@ +# compatibility for PHP and TYPO3 Docker Boilerplate +include /opt/docker/etc/nginx/vhost.common.d/*.conf; diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-general.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-general.conf new file mode 100644 index 000000000..31c9bf05a --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-general.conf @@ -0,0 +1 @@ +client_max_body_size ; diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-location-root.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-location-root.conf new file mode 100644 index 000000000..28fd811bc --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-location-root.conf @@ -0,0 +1,3 @@ +location / { + try_files $uri $uri/ /?$query_string; +} diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf new file mode 100644 index 000000000..9646c6826 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-log.conf @@ -0,0 +1,2 @@ +access_log /docker.stdout; +error_log /docker.stderr warn; diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-php.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-php.conf new file mode 100644 index 000000000..22b08a50d --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.common.d/10-php.conf @@ -0,0 +1,7 @@ +location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $request_filename; + fastcgi_read_timeout ; +} diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.conf new file mode 100644 index 000000000..b4df6d710 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.conf @@ -0,0 +1,28 @@ +server { + listen 80 default_server; + listen [::]:80 default_server; + + server_name _ docker; + + root ""; + index ; + + include /opt/docker/etc/nginx/vhost.common.d/*.conf; +} + +############## +# SSL +############## + +server { + listen 443 ssl default_server; + listen [::]:443 ssl default_server; + + server_name _ docker; + + root ""; + index ; + + include /opt/docker/etc/nginx/vhost.common.d/*.conf; + include /opt/docker/etc/nginx/vhost.ssl.conf; +} diff --git a/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.ssl.conf b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.ssl.conf new file mode 100644 index 000000000..28e8aab17 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/nginx/vhost.ssl.conf @@ -0,0 +1,6 @@ +ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive +ssl_ciphers 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'; +ssl_prefer_server_ciphers on; + +ssl_certificate /opt/docker/etc/nginx/ssl/server.crt; +ssl_certificate_key /opt/docker/etc/nginx/ssl/server.key; diff --git a/docker/php-nginx/8.5-alpine/conf/etc/supervisor.d/nginx.conf b/docker/php-nginx/8.5-alpine/conf/etc/supervisor.d/nginx.conf new file mode 100644 index 000000000..657bf499b --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/etc/supervisor.d/nginx.conf @@ -0,0 +1,14 @@ +[group:nginx] +programs=nginxd +priority=20 + +[program:nginxd] +command = /opt/docker/bin/service.d/nginx.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/.gitkeep b/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh b/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh new file mode 100644 index 000000000..1ba70f963 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-nginx.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Remove daemon statement (will be added as command line argument) +go-replace --mode=lineinfile --regex --regex-backrefs \ + -s '^[\s#]*daemon ' -r '' \ + -- /etc/nginx/nginx.conf + +go-replace --mode=line --regex --regex-backrefs \ + -s '^([ \t]*access_log)[ \t]*([^\t ;]+)(.*;)$' -r '$1 /docker.stdout $3' \ + -s '^([ \t]*error_log)[ \t]*([^\t ;]+)(.*;)$' -r '$1 /docker.stderr $3' \ + -- /etc/nginx/nginx.conf + +# Enable nginx main config +mkdir -p /etc/nginx/conf.d/ +ln -sf /opt/docker/etc/nginx/main.conf /etc/nginx/conf.d/10-docker.conf + +rm -f \ + /etc/nginx/sites-enabled/default \ + /etc/nginx/conf.d/default.conf + +if [[ "$IMAGE_FAMILY" == "RedHat" ]] || [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + ln -sf /opt/docker/etc/nginx/nginx.conf /etc/nginx/nginx.conf +fi + +# Clear log dir +rm -rf /var/lib/nginx/logs +mkdir -p /var/lib/nginx/logs + +# Set log to stdout/stderr +ln -sf /var/lib/nginx/logs/access.log /docker.stdout +ln -sf /var/lib/nginx/logs/error.log /docker.stderr + +# Fix rights of ssl files +chown -R root:root /opt/docker/etc/nginx/ssl +find /opt/docker/etc/nginx/ssl -type d -exec chmod 750 {} \; +find /opt/docker/etc/nginx/ssl -type f -exec chmod 640 {} \; diff --git a/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-php.sh b/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..4a7d82647 --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# Restrict php-fpm to local connection +go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 127.0.0.1:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' diff --git a/docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/.gitkeep b/docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/20-nginx.sh b/docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/20-nginx.sh new file mode 100644 index 000000000..0264b6c2e --- /dev/null +++ b/docker/php-nginx/8.5-alpine/conf/provision/entrypoint.d/20-nginx.sh @@ -0,0 +1,24 @@ +# Create tmp dir for nginx +mkdir -p /var/tmp/nginx/ + +# Prevent startup of nginx (ubuntu 16.04 needs it) +ln -f -s /var/lib/nginx/logs /var/log/nginx + +# Replace markers +go-replace \ + -s "" -r "$WEB_DOCUMENT_INDEX" \ + -s "" -r "$WEB_DOCUMENT_ROOT" \ + -s "" -r "$WEB_ALIAS_DOMAIN" \ + -s "" -r "$HOSTNAME" \ + -s "" -r "$WEB_PHP_SOCKET" \ + -s "" -r "$WEB_PHP_TIMEOUT" \ + -s "" -r "$SERVICE_NGINX_CLIENT_MAX_BODY_SIZE" \ + --path=/opt/docker/etc/nginx/ \ + --path-pattern='*.conf' \ + --ignore-empty + +if [[ -z "$WEB_PHP_SOCKET" ]]; then + ## WEB_PHP_SOCKET is not set, remove PHP files + rm -f -- /opt/docker/etc/nginx/conf.d/10-php.conf + rm -f -- /opt/docker/etc/nginx/vhost.common.d/10-php.conf +fi diff --git a/docker/php-nginx/8.5/Dockerfile b/docker/php-nginx/8.5/Dockerfile new file mode 100644 index 000000000..10fd51d04 --- /dev/null +++ b/docker/php-nginx/8.5/Dockerfile @@ -0,0 +1,28 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-nginx:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + +FROM webdevops/php:8.5 + +ENV WEB_DOCUMENT_ROOT=/app \ + WEB_DOCUMENT_INDEX=index.php \ + WEB_ALIAS_DOMAIN=*.vm \ + WEB_PHP_TIMEOUT=600 \ + WEB_PHP_SOCKET="" +ENV WEB_PHP_SOCKET=127.0.0.1:9000 +ENV SERVICE_NGINX_CLIENT_MAX_BODY_SIZE="50m" + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Install nginx + && printf "deb http://nginx.org/packages/debian/ $(docker-image-info dist-codename) nginx\n deb-src http://nginx.org/packages/debian/ $(docker-image-info dist-codename) nginx" \ + >> /etc/apt/sources.list \ + && curl -L https://nginx.org/keys/nginx_signing.key | apt-key add - \ + && apt-install \ + nginx \ + && docker-run-bootstrap \ + && docker-image-cleanup + +EXPOSE 80 443 diff --git a/docker/php-nginx/8.5/Dockerfile.jinja2 b/docker/php-nginx/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..19f483fee --- /dev/null +++ b/docker/php-nginx/8.5/Dockerfile.jinja2 @@ -0,0 +1,14 @@ +{{ docker.from("php", "8.5") }} + +{{ environment.web() }} +{{ environment.webPhp() }} +{{ environment.nginx() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ nginx.debian() }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} + +{{ docker.expose('80 443') }} diff --git a/docker/php-nginx/8.5/conf/bin/service.d/nginx.d/10-init.sh b/docker/php-nginx/8.5/conf/bin/service.d/nginx.d/10-init.sh new file mode 100644 index 000000000..8acb5111d --- /dev/null +++ b/docker/php-nginx/8.5/conf/bin/service.d/nginx.d/10-init.sh @@ -0,0 +1,5 @@ +if [[ ! -e "$WEB_DOCUMENT_ROOT" ]]; then + echo "" + echo "[WARNING] WEB_DOCUMENT_ROOT does not exists with path \"$WEB_DOCUMENT_ROOT\"!" + echo "" +fi diff --git a/docker/php-nginx/8.5/conf/bin/service.d/nginx.sh b/docker/php-nginx/8.5/conf/bin/service.d/nginx.sh new file mode 100644 index 000000000..3517c72a5 --- /dev/null +++ b/docker/php-nginx/8.5/conf/bin/service.d/nginx.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_NGINX_OPTS" ]]; then SERVICE_NGINX_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/nginx.d/" + +exec /usr/sbin/nginx -g 'daemon off;' $SERVICE_NGINX_OPTS diff --git a/docker/php-nginx/8.5/conf/etc/nginx/conf.d/.gitkeep b/docker/php-nginx/8.5/conf/etc/nginx/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5/conf/etc/nginx/conf.d/10-php.conf b/docker/php-nginx/8.5/conf/etc/nginx/conf.d/10-php.conf new file mode 100644 index 000000000..9abe45f0a --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/conf.d/10-php.conf @@ -0,0 +1,3 @@ +upstream php { + server ; +} diff --git a/docker/php-nginx/8.5/conf/etc/nginx/global.conf b/docker/php-nginx/8.5/conf/etc/nginx/global.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/global.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-nginx/8.5/conf/etc/nginx/main.conf b/docker/php-nginx/8.5/conf/etc/nginx/main.conf new file mode 100644 index 000000000..06de0651b --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/main.conf @@ -0,0 +1,4 @@ +include /opt/docker/etc/nginx/global.conf; +include /opt/docker/etc/nginx/php.conf; +include /opt/docker/etc/nginx/conf.d/*.conf; +include /opt/docker/etc/nginx/vhost.conf; diff --git a/docker/php-nginx/8.5/conf/etc/nginx/php.conf b/docker/php-nginx/8.5/conf/etc/nginx/php.conf new file mode 100644 index 000000000..b6141db09 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/php.conf @@ -0,0 +1 @@ +# deprecated diff --git a/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.crt b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.crt new file mode 100644 index 000000000..6b0694907 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE1DCCArwCCQDMMwGnSuK0tTANBgkqhkiG9w0BAQsFADAsMRswGQYDVQQKExJE +b2NrZXIgQm9pbGVycGxhdGUxDTALBgNVBAMUBCoudm0wHhcNMTUwNTA0MTcxNDQw +WhcNMjUwNTAxMTcxNDQwWjAsMRswGQYDVQQKExJEb2NrZXIgQm9pbGVycGxhdGUx +DTALBgNVBAMUBCoudm0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDK +3TIUiyDvXelWeY9VXMrpjuZtYpVSDsACLpjFUhMnsP5/iKT0VbeZyqHvmwZjAg4G +Y10d+yZDdgv/xeu0HPOFbtR6pCp10d1tdLHZto5Cyuxu7IQsAVjnD6Ko7XFwtNk7 +9o6JZfAFaGL4w5MokrVmCtspnsMZH7/7zU4f96cbF39zLopnpuXGD6t6DA8Qj3gy +0duaTjs42bYRN+rwLzVKAev99iQ4kPMJn4vV6/Xk6rtoSzC67GQyVZYaFypicD1S +NtsRmgEVvjCBDbrLOneUiRwff6qxEsZi7Hxv7BKFj4iUWnII7K/nP7T6uBHQjHO+ +FpsGkU9lCMrCeVFBe8kKz/cbhd+yLUxXwAPr6gSOPmwn232Gy4tozvqZHpbUxsgx +7sT3ej9K66h1D7J+BjNFWYM1hbnC1r7H/xS7EBzBV8qRoQCVe08Juf5xsouXFakD +clLV4+L+1cxkpwsCQDly5g3tm/TBqA2O+ZJ+YHQDHKkzMyhLs6i0X/M5qvJBiLg1 +GLTCS20rpQ5gXTEGuINqHgwXQWkUO6bhgSYqdHGX3zbZ5+qWpI4eui3dHZ1Ll0VH +6Icpb7ORTQwhc6W8KBlybssYPSlGOEBGUjYGNheoz9FpoSkxCis+P8ZNKtrmpPoq +Su0eOOGFOFHG02eOgPVxSwrDeN9MVJo7BPysGMHJmQIDAQABMA0GCSqGSIb3DQEB +CwUAA4ICAQC63g6NHmQKbiy3G6iaDkpUSbr5Mq2YgU61XnvWVyREqDcy/BXCw9oY +SJ/KUvCpqPnACNOFqjadRAmPiA9nf2WduoCgwQGV/YRFGswSuVvh/3X2TX5NWvbS +t8MQDttQg1dxpiMUjlu3rqhfohBdWJvp2lVSdpDb/MOlXBc/+p7HfOHwhqB7wwPN +NNbSKUbZqZxmD8cOf1X0hASr1yfFPj+2vST3ESaON8S0T2p63YX/sD5jvOUiEuyw +I5WcvLmiRZA07SH8nWyckLY3qWL+OlhSZrlAnolWS00b+7h5LNuRYEjKzwVgntoA +aCopyQih6wIk0+AfJO4sfhJBmQhnIrAaP/zwBH5g9zVizLf5H7U+hNXrMwgw55Sq +vjMdkZHvPKUXTvVit/rYE9H+PY3brkRWzOl4V/i/ZLJJm5805H/NyTbz9kPMJw2Q +nn+KOpfXXySD39f8iuRgSKXsYNul38hxWgcZZ6g+sOOp2n/VUmf0eZUWNnJ8i7AP +4Qif7aDKMcibOwSwsB+DKZXDvZ5XSdnMphtuLS5rPSL81rVRmWC2DMfQ2eP8j0WN +VTroSk0xedQ7Qr+9TNooi9IyzX6n1a2S1UiciEZ3ZcDbXPl/P01m+IYZyPnLv0+9 +ZeioZYh1JLv3/OKsMrMLTfh2ZCj3aXwmc2Owi/wU2LS5QUOMcHH7CQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.csr b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.csr new file mode 100644 index 000000000..8a9909f77 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEcTCCAlkCAQAwLDEbMBkGA1UEChMSRG9ja2VyIEJvaWxlcnBsYXRlMQ0wCwYD +VQQDFAQqLnZtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyt0yFIsg +713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik9FW3mcqh75sGYwIOBmNdHfsm +Q3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyELAFY5w+iqO1xcLTZO/aOiWXw +BWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6KZ6blxg+regwPEI94MtHbmk47 +ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEswuuxkMlWWGhcqYnA9UjbbEZoB +Fb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpyCOyv5z+0+rgR0IxzvhabBpFP +ZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9hsuLaM76mR6W1MbIMe7E93o/ +SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEAlXtPCbn+cbKLlxWpA3JS1ePi +/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMoS7OotF/zOaryQYi4NRi0wktt +K6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efqlqSOHrot3R2dS5dFR+iHKW+z +kU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEpMQorPj/GTSra5qT6KkrtHjjh +hThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEAAaAAMA0GCSqGSIb3DQEBCwUA +A4ICAQBsEBgC2YepuZq/8UqvKMZKVy/etDKXj7BB+QPb+leNiKD7p4LDxHJsZSH8 +Ku9uMPeLfiQDn5jA41k5SlGttzvObd65RdEbO3yHpqsg05EGSDDLfaE1k2Al/qmX +/o8roPZF7+2kZthgMAgkcokS54LYqEYTGqOf3J9Ss0yRIZwhaOVebfFIbIOdpw0B +JNMIJPHTMdZrcuRVI+wR1uPLIlEJzBvxTGbTrvPU25WJFtu+EajKqXO0SHdy0yx8 +uH4ykRBJRc36+oYo7nZ5D56dh7pZn3+9J64FKAOV0Q3KqMFieGy053ezuhJd70eZ +UozTgfjs3WpMzoYmKETSyl3XZSdInRe+sUlKPruTsKyg69oYxjPlrGfAmmGcCFca +TnZinT18dI92zK7OtOVkmYeYKC1lwuhftVrNMXzZuHOGpS9NNYtc4nDqDMIEOfV3 +6rCdu03WjEgJ+Z67tJs16xOx9du4/EHxS2Ijn9DPfVJvYy0TgzDi1BUpjWx0KTLx +C4OQbEZ/QTWmHVbSch/hcZhzbf7SNh5RpnW4EtmcpDFjIKMfxJmoKeiTf7qnilx0 +7uRvsZFKoDKRDOFiPfgMg5AOtLHziYsd9m0tJjC2GHvFuPjzOtzhnUUjmmvht170 +2aqKakjST4amg7jzLcs871HX0/WjOtt29NpOz140blkKf1bisg== +-----END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.key b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.key new file mode 100644 index 000000000..c9eec145f --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/ssl/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIJKAIBAAKCAgEAyt0yFIsg713pVnmPVVzK6Y7mbWKVUg7AAi6YxVITJ7D+f4ik +9FW3mcqh75sGYwIOBmNdHfsmQ3YL/8XrtBzzhW7UeqQqddHdbXSx2baOQsrsbuyE +LAFY5w+iqO1xcLTZO/aOiWXwBWhi+MOTKJK1ZgrbKZ7DGR+/+81OH/enGxd/cy6K +Z6blxg+regwPEI94MtHbmk47ONm2ETfq8C81SgHr/fYkOJDzCZ+L1ev15Oq7aEsw +uuxkMlWWGhcqYnA9UjbbEZoBFb4wgQ26yzp3lIkcH3+qsRLGYux8b+wShY+IlFpy +COyv5z+0+rgR0IxzvhabBpFPZQjKwnlRQXvJCs/3G4Xfsi1MV8AD6+oEjj5sJ9t9 +hsuLaM76mR6W1MbIMe7E93o/SuuodQ+yfgYzRVmDNYW5wta+x/8UuxAcwVfKkaEA +lXtPCbn+cbKLlxWpA3JS1ePi/tXMZKcLAkA5cuYN7Zv0wagNjvmSfmB0AxypMzMo +S7OotF/zOaryQYi4NRi0wkttK6UOYF0xBriDah4MF0FpFDum4YEmKnRxl9822efq +lqSOHrot3R2dS5dFR+iHKW+zkU0MIXOlvCgZcm7LGD0pRjhARlI2BjYXqM/RaaEp +MQorPj/GTSra5qT6KkrtHjjhhThRxtNnjoD1cUsKw3jfTFSaOwT8rBjByZkCAwEA +AQKCAgAbZPdoUsllyZbC+LNkYZ19ILD5QIDNjfRb1xMGQmkXyQz1B+zOmeyrNfPc +OWEJabOfJTfj3pByN7SzG3US4333HNpQnW6mbmqqZ0HFFqPrXR/Ecuf+UUhCG5hp +m3bgM2vKbyccYsmg0VHcKfzrU7RvTTP/UNMjx2fThwvvwS+ttuSdF0HVcXJB5sfP +OWWnZNhkdHZlRf81VCED/jsZqCZYEh5eMyj9AoXvXL4zayPPf+tC0DSKaXW2Xlxg +tZQhqup8+a9nlxZia0Z9hu8clo6jXkiP8FuKgfCMV0cOjiCKLLHS5svTbLLsVWwJ +F2ZAdVcD6mWQ43qHOEK5NEzGvQKO14CaOLnVT2yAkMcyNohsEgoDP9oCBGDJQbBH +NmtZfpVjjtuTr9P9TEkU1FcBRo0x6Il/DkzamGbOeFAmgnaGElhJ5c/CAG7whaIf +mUfFOBGPH/wESY3gBOACDofeSh27RrlvbLaPiCGKivDUTBmhBsIuso6XqOKbvtfV +/HhhndpdRVfIj4DdE7gIrLIGN977JMVAXFCNz7KrvAWwcOXrCHCoWpklJ9repq8l +26ICY8K7VXktzDHQUmhd88ZWR+9ASURsJghUgZUOcMrEGyvci6Y8hpLhHiNVPHuQ ++ps7tpPsXSntBUqWBzhRZh74+nJlOOV6oYykl30JT2JzB6lwiQKCAQEA9ecn8N2z +20tR2UEiTv/MjVSepQtAAajegvcd1iasvvQKXnh3XLmoZHzH2tTa0lp5RIZpUQPl +lOTwko0lYTBnYblt65AJQ3FTgisNobIpoqE8BFXLm6wggz7CbabjmPGDe173lPGR +sI0YSKYvzrdn4zw8Fh6WULJyZHLi58zJYL3r0WBDiOoxpGaGA1GlmkuIWjhKHaX2 +OvF1vOuQDJ2eDyTc5TYFC0NKG76Mvanov5L/yrhNM/umbmp0SPspzHGZobAKUr20 +OazFT8S+2TA1OTxWNbiPbSimFoaZbEdqsNACGfVJWO8Sh8iqlt5RmEcSiSvGBj6L +QKprRO9Fsp2GawKCAQEA0zGhRsnux4JTNsdUSYsEJtITMj6eE+nl7CoZ9DAOwC5X +6/aSpUE4TT+pWNrt9iluXiGL0j89UJ7r/L1OcsiyzGb8ig9NU4zr1NIGTZ0DstHi +HPYINjeiBJEFIy17kOQn+9/I5c4hBUwz6ihwNoEomymVB/EsLJKAML0AudJGKg+Z +/f/qrS40eab5SAiaKgsh0MZnj+vIxyGBydt6r2HGmjfNITVbXIu6IpO+6NXDwM/e +7v10AAZ3j9+gb1RedLg2ghuIuYU90hmMhtVWsh9nVmaOkMW9/WFgOPYvt/mHH/hR +d4pePZ9kACGmqo/b9sHvHw1YEubtCt1VUiNuFxnJCwKCAQBWnxz0vkRTJY8phsY9 +KeK2jm5sGTBs5T2syLwb6ffENFdKvAjgAw6Mh2And/+1ReWd+/MxdLv03UjZdxsJ +x3FDfXx5FH4O4ebW3a+pnAcKoN1xcX+N0O6LDRqUYcue3sTAOs3gC9CUbr91KAWD +Phw8ccWAzTmKJ7IgLFA982ekyoI9eTmRC159WRgwJxy844qerWF+XC4GyXP+HsTZ +jNRW5Vdi7sqMEyIR7+fIEAhLI88zbATWIPmZv6pC4ybwO7wwtsCMMQNBpdjDprzL +6S12ggikV+U+QKlxGe0FtYqhykRTPJKf32eZqVheWOZJTA/9fgv9ux52oxGycM8O +gmsNAoIBAQC60m5uZnd5uYnPLWkcXYNgq/kbO1UvHHut/FhVMKX7z4MrU0XKNfWO +MECoP5K9bU0aq+Y6KIMe7FapjvT0iSHRu1Cu+HZY8JI2A0xcIAeDijLRl7sP6wrB +q1+2DKgANjRAlWfsEfoX658JBpitPngjOheBnRCMpVQMyUT5HE/BKWf5zwdUB0mY +S+K8nA90HcDeJIS8RcGolbVwUV0oBABhr/cf50lYhqozqCr7YQ33ZGs7Uq3oz8+4 +UARmN2YPLl3Znm3GX12em8c6B0LX8vvA7Jw06Rf2Ksup1+3Ce1PTLiEy9A4FyRf3 +Hc2HmBbnJAtZlr5QikMqlzzAmmLqwH6dAoIBAC+ryaQGJFsijCSuaDfRp/uy9xnd +DjgMdTwjl5WLBmyudChVMANl8eqCbvVO41CN84yORk03oQ4cx0eKxAZaLaSzgkb3 +W0X2nFQe7VJSYMQswCQ+1WfJvEFrIdkEKIa//uQdhqNrgUKSNVhhSTMbNEkDTIWn +ssbv2H9hvUaFt/J/vP9zCKuU5oYvNU7Oi6ZXRYezRn9atlJYanLFoJnHUBRzGms5 +K0vhdCPDXQq87z5Yudoh0jLUQF9Nx0GTWeBceQ9n5hZeRUNQWxP4AJThQX9KSPTS +mbL3Kh4XNRmAUJ2N+Njh+3dg91s+JkKvC1wcspLsmLPQe+9AxBSH9y5JE/8= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.conf new file mode 100644 index 000000000..a5df62ef8 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.conf @@ -0,0 +1,2 @@ +# compatibility for PHP and TYPO3 Docker Boilerplate +include /opt/docker/etc/nginx/vhost.common.d/*.conf; diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/.gitkeep b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-general.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-general.conf new file mode 100644 index 000000000..31c9bf05a --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-general.conf @@ -0,0 +1 @@ +client_max_body_size ; diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-location-root.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-location-root.conf new file mode 100644 index 000000000..28fd811bc --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-location-root.conf @@ -0,0 +1,3 @@ +location / { + try_files $uri $uri/ /?$query_string; +} diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-log.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-log.conf new file mode 100644 index 000000000..9646c6826 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-log.conf @@ -0,0 +1,2 @@ +access_log /docker.stdout; +error_log /docker.stderr warn; diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-php.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-php.conf new file mode 100644 index 000000000..22b08a50d --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.common.d/10-php.conf @@ -0,0 +1,7 @@ +location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $request_filename; + fastcgi_read_timeout ; +} diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.conf new file mode 100644 index 000000000..b4df6d710 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.conf @@ -0,0 +1,28 @@ +server { + listen 80 default_server; + listen [::]:80 default_server; + + server_name _ docker; + + root ""; + index ; + + include /opt/docker/etc/nginx/vhost.common.d/*.conf; +} + +############## +# SSL +############## + +server { + listen 443 ssl default_server; + listen [::]:443 ssl default_server; + + server_name _ docker; + + root ""; + index ; + + include /opt/docker/etc/nginx/vhost.common.d/*.conf; + include /opt/docker/etc/nginx/vhost.ssl.conf; +} diff --git a/docker/php-nginx/8.5/conf/etc/nginx/vhost.ssl.conf b/docker/php-nginx/8.5/conf/etc/nginx/vhost.ssl.conf new file mode 100644 index 000000000..28e8aab17 --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/nginx/vhost.ssl.conf @@ -0,0 +1,6 @@ +ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive +ssl_ciphers 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'; +ssl_prefer_server_ciphers on; + +ssl_certificate /opt/docker/etc/nginx/ssl/server.crt; +ssl_certificate_key /opt/docker/etc/nginx/ssl/server.key; diff --git a/docker/php-nginx/8.5/conf/etc/supervisor.d/nginx.conf b/docker/php-nginx/8.5/conf/etc/supervisor.d/nginx.conf new file mode 100644 index 000000000..657bf499b --- /dev/null +++ b/docker/php-nginx/8.5/conf/etc/supervisor.d/nginx.conf @@ -0,0 +1,14 @@ +[group:nginx] +programs=nginxd +priority=20 + +[program:nginxd] +command = /opt/docker/bin/service.d/nginx.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-nginx/8.5/conf/provision/bootstrap.d/.gitkeep b/docker/php-nginx/8.5/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-nginx.sh b/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-nginx.sh new file mode 100644 index 000000000..1ba70f963 --- /dev/null +++ b/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-nginx.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Remove daemon statement (will be added as command line argument) +go-replace --mode=lineinfile --regex --regex-backrefs \ + -s '^[\s#]*daemon ' -r '' \ + -- /etc/nginx/nginx.conf + +go-replace --mode=line --regex --regex-backrefs \ + -s '^([ \t]*access_log)[ \t]*([^\t ;]+)(.*;)$' -r '$1 /docker.stdout $3' \ + -s '^([ \t]*error_log)[ \t]*([^\t ;]+)(.*;)$' -r '$1 /docker.stderr $3' \ + -- /etc/nginx/nginx.conf + +# Enable nginx main config +mkdir -p /etc/nginx/conf.d/ +ln -sf /opt/docker/etc/nginx/main.conf /etc/nginx/conf.d/10-docker.conf + +rm -f \ + /etc/nginx/sites-enabled/default \ + /etc/nginx/conf.d/default.conf + +if [[ "$IMAGE_FAMILY" == "RedHat" ]] || [[ "$IMAGE_FAMILY" == "Alpine" ]]; then + ln -sf /opt/docker/etc/nginx/nginx.conf /etc/nginx/nginx.conf +fi + +# Clear log dir +rm -rf /var/lib/nginx/logs +mkdir -p /var/lib/nginx/logs + +# Set log to stdout/stderr +ln -sf /var/lib/nginx/logs/access.log /docker.stdout +ln -sf /var/lib/nginx/logs/error.log /docker.stderr + +# Fix rights of ssl files +chown -R root:root /opt/docker/etc/nginx/ssl +find /opt/docker/etc/nginx/ssl -type d -exec chmod 750 {} \; +find /opt/docker/etc/nginx/ssl -type f -exec chmod 640 {} \; diff --git a/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-php.sh b/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-php.sh new file mode 100644 index 000000000..4a7d82647 --- /dev/null +++ b/docker/php-nginx/8.5/conf/provision/bootstrap.d/10-php.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# Restrict php-fpm to local connection +go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 127.0.0.1:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' diff --git a/docker/php-nginx/8.5/conf/provision/entrypoint.d/.gitkeep b/docker/php-nginx/8.5/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-nginx/8.5/conf/provision/entrypoint.d/20-nginx.sh b/docker/php-nginx/8.5/conf/provision/entrypoint.d/20-nginx.sh new file mode 100644 index 000000000..0264b6c2e --- /dev/null +++ b/docker/php-nginx/8.5/conf/provision/entrypoint.d/20-nginx.sh @@ -0,0 +1,24 @@ +# Create tmp dir for nginx +mkdir -p /var/tmp/nginx/ + +# Prevent startup of nginx (ubuntu 16.04 needs it) +ln -f -s /var/lib/nginx/logs /var/log/nginx + +# Replace markers +go-replace \ + -s "" -r "$WEB_DOCUMENT_INDEX" \ + -s "" -r "$WEB_DOCUMENT_ROOT" \ + -s "" -r "$WEB_ALIAS_DOMAIN" \ + -s "" -r "$HOSTNAME" \ + -s "" -r "$WEB_PHP_SOCKET" \ + -s "" -r "$WEB_PHP_TIMEOUT" \ + -s "" -r "$SERVICE_NGINX_CLIENT_MAX_BODY_SIZE" \ + --path=/opt/docker/etc/nginx/ \ + --path-pattern='*.conf' \ + --ignore-empty + +if [[ -z "$WEB_PHP_SOCKET" ]]; then + ## WEB_PHP_SOCKET is not set, remove PHP files + rm -f -- /opt/docker/etc/nginx/conf.d/10-php.conf + rm -f -- /opt/docker/etc/nginx/vhost.common.d/10-php.conf +fi diff --git a/docker/php-official/5.6/Dockerfile b/docker/php-official/5.6/Dockerfile index df945418c..99db5a589 100644 --- a/docker/php-official/5.6/Dockerfile +++ b/docker/php-official/5.6/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/7.0/Dockerfile b/docker/php-official/7.0/Dockerfile index ee67b29db..d606d24f4 100644 --- a/docker/php-official/7.0/Dockerfile +++ b/docker/php-official/7.0/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/7.1-alpine/Dockerfile b/docker/php-official/7.1-alpine/Dockerfile index 2b555bf4c..92d1e74ad 100644 --- a/docker/php-official/7.1-alpine/Dockerfile +++ b/docker/php-official/7.1-alpine/Dockerfile @@ -148,7 +148,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -159,7 +159,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ hash \ pcntl \ diff --git a/docker/php-official/7.1/Dockerfile b/docker/php-official/7.1/Dockerfile index 0670dda63..6a071c5f1 100644 --- a/docker/php-official/7.1/Dockerfile +++ b/docker/php-official/7.1/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/7.2-alpine/Dockerfile b/docker/php-official/7.2-alpine/Dockerfile index 19d9e9799..6c0a8891e 100644 --- a/docker/php-official/7.2-alpine/Dockerfile +++ b/docker/php-official/7.2-alpine/Dockerfile @@ -148,7 +148,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -159,7 +159,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ hash \ pcntl \ diff --git a/docker/php-official/7.2/Dockerfile b/docker/php-official/7.2/Dockerfile index 065378b3b..1571618ad 100644 --- a/docker/php-official/7.2/Dockerfile +++ b/docker/php-official/7.2/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/7.3-alpine/Dockerfile b/docker/php-official/7.3-alpine/Dockerfile index a8785a913..0db11ca34 100644 --- a/docker/php-official/7.3-alpine/Dockerfile +++ b/docker/php-official/7.3-alpine/Dockerfile @@ -148,7 +148,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -159,7 +159,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ hash \ pcntl \ diff --git a/docker/php-official/7.3/Dockerfile b/docker/php-official/7.3/Dockerfile index dfb574912..c3d168612 100644 --- a/docker/php-official/7.3/Dockerfile +++ b/docker/php-official/7.3/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/7.4-alpine/Dockerfile b/docker/php-official/7.4-alpine/Dockerfile index aa250416b..0c3537634 100644 --- a/docker/php-official/7.4-alpine/Dockerfile +++ b/docker/php-official/7.4-alpine/Dockerfile @@ -151,7 +151,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -165,7 +165,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ pcntl \ pdo_mysql \ diff --git a/docker/php-official/7.4/Dockerfile b/docker/php-official/7.4/Dockerfile index 7df60f658..032d57bc7 100644 --- a/docker/php-official/7.4/Dockerfile +++ b/docker/php-official/7.4/Dockerfile @@ -142,7 +142,7 @@ RUN set -x \ && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \ && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ diff --git a/docker/php-official/8.0-alpine/Dockerfile b/docker/php-official/8.0-alpine/Dockerfile index 452f79a7d..32eaf9688 100644 --- a/docker/php-official/8.0-alpine/Dockerfile +++ b/docker/php-official/8.0-alpine/Dockerfile @@ -151,7 +151,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -165,7 +165,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ pcntl \ pdo_mysql \ diff --git a/docker/php-official/8.0/Dockerfile b/docker/php-official/8.0/Dockerfile index b22800529..57ac73ccf 100644 --- a/docker/php-official/8.0/Dockerfile +++ b/docker/php-official/8.0/Dockerfile @@ -144,7 +144,7 @@ RUN set -x \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ amqp \ diff --git a/docker/php-official/8.1-alpine/Dockerfile b/docker/php-official/8.1-alpine/Dockerfile index 942ed80a0..0e37ad44a 100644 --- a/docker/php-official/8.1-alpine/Dockerfile +++ b/docker/php-official/8.1-alpine/Dockerfile @@ -149,7 +149,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -163,7 +163,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ pcntl \ pdo_mysql \ diff --git a/docker/php-official/8.1/Dockerfile b/docker/php-official/8.1/Dockerfile index 7a2822bc7..2ec1c0c33 100644 --- a/docker/php-official/8.1/Dockerfile +++ b/docker/php-official/8.1/Dockerfile @@ -144,7 +144,7 @@ RUN set -x \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ amqp \ diff --git a/docker/php-official/8.2-alpine/Dockerfile b/docker/php-official/8.2-alpine/Dockerfile index 248c74d63..9741d8784 100644 --- a/docker/php-official/8.2-alpine/Dockerfile +++ b/docker/php-official/8.2-alpine/Dockerfile @@ -125,7 +125,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ @@ -149,7 +149,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -163,7 +163,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ pcntl \ pdo_mysql \ @@ -230,7 +230,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ diff --git a/docker/php-official/8.2/Dockerfile b/docker/php-official/8.2/Dockerfile index 7442c7672..a27f2ac23 100644 --- a/docker/php-official/8.2/Dockerfile +++ b/docker/php-official/8.2/Dockerfile @@ -144,7 +144,7 @@ RUN set -x \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ amqp \ diff --git a/docker/php-official/8.3-alpine/Dockerfile b/docker/php-official/8.3-alpine/Dockerfile index bd6d925ed..a18417dcb 100644 --- a/docker/php-official/8.3-alpine/Dockerfile +++ b/docker/php-official/8.3-alpine/Dockerfile @@ -125,7 +125,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ @@ -149,7 +149,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && docker-php-ext-configure ldap \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -163,7 +163,7 @@ RUN set -x \ intl \ gettext \ ldap \ - mysqli \ + mysqli \ imap \ pcntl \ pdo_mysql \ @@ -230,7 +230,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ diff --git a/docker/php-official/8.3/Dockerfile b/docker/php-official/8.3/Dockerfile index aec235cf1..ee05344af 100644 --- a/docker/php-official/8.3/Dockerfile +++ b/docker/php-official/8.3/Dockerfile @@ -144,7 +144,7 @@ RUN set -x \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ + && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ amqp \ diff --git a/docker/php-official/8.4-alpine/Dockerfile b/docker/php-official/8.4-alpine/Dockerfile index f79d3d0f6..2d4a8230d 100644 --- a/docker/php-official/8.4-alpine/Dockerfile +++ b/docker/php-official/8.4-alpine/Dockerfile @@ -125,7 +125,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ @@ -148,7 +148,7 @@ RUN set -x \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ - && docker-php-ext-configure ldap \ + && docker-php-ext-configure ldap \ && docker-php-ext-install \ bcmath \ bz2 \ @@ -228,7 +228,7 @@ RUN set -x \ icu-dev \ postgresql-dev \ libxml2-dev \ - ldb-dev \ + samba-dev \ pcre-dev \ libxslt-dev \ libzip-dev \ diff --git a/docker/php-official/8.4/Dockerfile b/docker/php-official/8.4/Dockerfile index f79839c03..a54004327 100644 --- a/docker/php-official/8.4/Dockerfile +++ b/docker/php-official/8.4/Dockerfile @@ -143,7 +143,7 @@ RUN set -x \ && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ - && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ + && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ && docker-php-ext-install \ bcmath \ amqp \ diff --git a/docker/php-official/8.5-alpine/Dockerfile b/docker/php-official/8.5-alpine/Dockerfile new file mode 100644 index 000000000..b4b775622 --- /dev/null +++ b/docker/php-official/8.5-alpine/Dockerfile @@ -0,0 +1,249 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-official:8.5-alpine +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + + +FROM php:8.5-fpm-alpine + +LABEL maintainer=info@webdevops.io \ + vendor=WebDevOps.io \ + io.webdevops.layout=8 \ + io.webdevops.version=1.5.0 + +ENV TERM="xterm" \ + LANG="C.UTF-8" \ + LC_ALL="C.UTF-8" +ENV DOCKER_CONF_HOME=/opt/docker/ \ + LOG_STDOUT="" \ + LOG_STDERR="" +ENV APPLICATION_USER=application \ + APPLICATION_GROUP=application \ + APPLICATION_PATH=/app \ + APPLICATION_UID=1000 \ + APPLICATION_GID=1000 +ENV PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" +ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" +ENV COMPOSER_VERSION="2" + + +# Baselayout copy (from staged image) +COPY --from=webdevops/toolbox /baselayout/sbin/* /sbin/ +COPY --from=webdevops/toolbox /baselayout/usr/local/bin/* /usr/local/bin/ + + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Init bootstrap + # Add community + && echo https://dl-4.alpinelinux.org/alpine/v3.20/community/ >> /etc/apk/repositories \ + # System update + && /usr/local/bin/apk-upgrade \ + # Install base stuff + && apk-install \ + bash \ + ca-certificates \ + openssl \ + && update-ca-certificates \ + && /usr/local/bin/generate-dockerimage-info \ + ## Fix su execution (eg for tests) + && mkdir -p /etc/pam.d/ \ + && echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su + +RUN set -x \ + # Install services + && chmod +x /opt/docker/bin/* \ + && apk-install \ + supervisor \ + wget \ + curl \ + vim \ + sed \ + tzdata \ + busybox-suid \ + && chmod +s /sbin/gosu \ + && docker-run-bootstrap + +RUN set -x \ + && apk-install shadow \ + && apk-install \ + # Install common tools + zip \ + unzip \ + bzip2 \ + drill \ + ldns \ + openssh-client \ + rsync \ + patch \ + git \ + && docker-run-bootstrap + +RUN set -x \ + # Install php environment + && apk-install \ + imagemagick \ + graphicsmagick \ + ghostscript \ + jpegoptim \ + pngcrush \ + optipng \ + pngquant \ + vips \ + rabbitmq-c \ + c-client \ + # Libraries + libldap \ + icu-libs \ + libintl \ + libpq \ + libxslt \ + libgomp \ + libzip \ + libmemcached \ + yaml \ + # Build dependencies + linux-headers \ + autoconf \ + g++ \ + make \ + libtool \ + pcre-dev \ + gettext-dev \ + freetype-dev \ + gmp-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + vips-dev \ + krb5-dev \ + openssl-dev \ + imap-dev \ + imagemagick-dev \ + rabbitmq-c-dev \ + openldap-dev \ + icu-dev \ + postgresql-dev \ + libxml2-dev \ + samba-dev \ + pcre-dev \ + libxslt-dev \ + libzip-dev \ + libmemcached-dev \ + yaml-dev \ + # Install guetzli + && wget https://github.com/google/guetzli/archive/master.zip \ + && unzip master.zip \ + && make -C guetzli-master \ + && cp guetzli-master/bin/Release/guetzli /usr/local/bin/ \ + && rm -rf master.zip guetzli-master \ + # https://github.com/docker-library/php/issues/240 + && apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted \ + # Install new version of ICU + && curl -sS -o /tmp/icu.tar.gz -L https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz \ + && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && make install && cd / && rm -rf /tmp/icu* \ + # Install extensions + && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \ + && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \ + && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ + && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ + && cd /usr/src/php/ext/amqp && git submodule update --init \ + && docker-php-ext-configure ldap \ + && docker-php-ext-install \ + bcmath \ + bz2 \ + calendar \ + exif \ + ftp \ + gmp \ + ffi \ + imagick \ + amqp \ + intl \ + gettext \ + ldap \ + mysqli \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + sysvmsg \ + sysvsem \ + sysvshm \ + shmop \ + xsl \ + zip \ + gd \ + gettext \ + opcache \ + # Install extensions for PHP 7.x + # Memcached for 7.3 can currently only be built from master + && MEMCACHED="`mktemp -d`" \ + && curl -skL https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz | tar zxf - --strip-components 1 -C $MEMCACHED \ + && docker-php-ext-configure $MEMCACHED \ + && docker-php-ext-install $MEMCACHED \ + && rm -rf $MEMCACHED \ + && pecl install apcu \ + && pecl install excimer \ + && pecl install opentelemetry \ + && pecl install protobuf \ + && pecl install vips \ + && pecl install yaml \ + && pecl install redis \ + && pecl install mongodb \ + && pecl install xmlrpc-1.0.0RC3 \ + && docker-php-ext-enable \ + apcu \ + excimer \ + opentelemetry \ + protobuf \ + vips \ + yaml \ + redis \ + xmlrpc \ + imagick \ + mongodb \ + # Uninstall dev and header packages + && apk del -f --purge \ + autoconf \ + linux-headers \ + g++ \ + make \ + libtool \ + pcre-dev \ + gettext-dev \ + freetype-dev \ + gmp-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + vips-dev \ + krb5-dev \ + openssl-dev \ + imap-dev \ + rabbitmq-c-dev \ + imagemagick-dev \ + openldap-dev \ + icu-dev \ + postgresql-dev \ + libxml2-dev \ + samba-dev \ + pcre-dev \ + libxslt-dev \ + libzip-dev \ + libmemcached-dev \ + yaml-dev \ + && rm -f /usr/local/etc/php-fpm.d/zz-docker.conf \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer2 \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer1 --1 \ + && ln -sf /usr/local/bin/composer2 /usr/local/bin/composer \ + # Enable php services + && docker-service enable syslog \ + && docker-service enable cron \ + && docker-run-bootstrap + +WORKDIR / +EXPOSE 9000 +ENTRYPOINT ["/entrypoint"] +CMD ["supervisord"] diff --git a/docker/php-official/8.5-alpine/Dockerfile.jinja2 b/docker/php-official/8.5-alpine/Dockerfile.jinja2 new file mode 100644 index 000000000..a8f0f2425 --- /dev/null +++ b/docker/php-official/8.5-alpine/Dockerfile.jinja2 @@ -0,0 +1,35 @@ + +{{ docker.fromOfficial("php", "8.5-fpm-alpine") }} + +{{ docker.version() }} + +{{ environment.general() }} +{{ environment.base() }} +{{ environment.baseApp() }} +{{ environment.phpOfficialSendmailWorkaround() }} {# Check if needed #} +{{ environment.phpAlpineIconvWorkaround() }} +{{ environment.phpComposerVersion() }} + +{{ baselayout.copy() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ bootstrap.alpine('3.20') }} + +RUN set -x \ + {{ base.alpine() }} \ + {{ provision.runBootstrap() }} + +RUN set -x \ + {{ baseapp.alpine() }} \ + {{ provision.runBootstrap() }} + +RUN set -x \ + {{ php.officialAlpine(version='8.5') }} \ + {{ provision.runBootstrap() }} + +{{ docker.workdir('/') }} +{{ docker.expose('9000') }} +{{ docker.entrypoint("/entrypoint") }} +{{ docker.cmd("supervisord") }} diff --git a/docker/php-official/8.5-alpine/conf/VERSION b/docker/php-official/8.5-alpine/conf/VERSION new file mode 100644 index 000000000..301160a93 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/VERSION @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/docker/php-official/8.5-alpine/conf/bin/bootstrap.sh b/docker/php-official/8.5-alpine/conf/bin/bootstrap.sh new file mode 100644 index 000000000..b1b3acdbc --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/bootstrap.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec docker-run-bootstrap diff --git a/docker/php-official/8.5-alpine/conf/bin/config.sh b/docker/php-official/8.5-alpine/conf/bin/config.sh new file mode 100644 index 000000000..46265a3c0 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/config.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +shopt -s nullglob + +### + # Check if current user is root + # + ## +function rootCheck() { + # Root check + if [ "$(/usr/bin/whoami)" != "root" ]; then + echo "[ERROR] $* must be run as root" + exit 1 + fi +} + +### + # Create /docker.stdout and /docker.stderr + # + ## +function createDockerStdoutStderr() { + # link stdout from docker + if [[ -n "$LOG_STDOUT" ]]; then + echo "Log stdout redirected to $LOG_STDOUT" + else + LOG_STDOUT="/proc/$$/fd/1" + fi + + if [[ -n "$LOG_STDERR" ]]; then + echo "Log stderr redirected to $LOG_STDERR" + else + LOG_STDERR="/proc/$$/fd/2" + fi + + ln -f -s "$LOG_STDOUT" /docker.stdout + ln -f -s "$LOG_STDERR" /docker.stderr +} +### + # Include script directory text inside a file + # + # $1 -> path + # + ## +function includeScriptDir() { + if [[ -d "$1" ]]; then + for FILE in "$1"/*.sh; do + echo "-> Executing ${FILE}" + # run custom scripts, only once + . "$FILE" + done + fi +} + +### + # Show deprecation notice + # + ## +function deprecationNotice() { + echo "" + echo "###############################################################################" + echo "### THIS CALL IS DEPRECATED AND WILL BE REMOVED IN THE FUTURE" + echo "###" + echo "### $*" + echo "###" + echo "###############################################################################" + echo "" +} + +### + # Run "entrypoint" scripts + ## +function runEntrypoints() { + ############### + # Try to find entrypoint + ############### + + ENTRYPOINT_SCRIPT="/opt/docker/bin/entrypoint.d/${TASK}.sh" + + if [ -f "$ENTRYPOINT_SCRIPT" ]; then + . "$ENTRYPOINT_SCRIPT" + fi + + ############### + # Run default + ############### + if [ -f "/opt/docker/bin/entrypoint.d/default.sh" ]; then + . /opt/docker/bin/entrypoint.d/default.sh + fi + + exit 1 +} + + # Run "entrypoint" provisioning + ## +function runProvisionEntrypoint() { + includeScriptDir "/opt/docker/provision/entrypoint.d" + includeScriptDir "/entrypoint.d" +} + +### + # List environment variables (based on prefix) + ## +function envListVars() { + if [[ $# -eq 1 ]]; then + env | grep "^${1}" | cut -d= -f1 + else + env | cut -d= -f1 + fi +} + +### + # Get environment variable (even with dots in name) + # + ## +function envGetValue() { + awk "BEGIN {print ENVIRON[\"$1\"]}" +} diff --git a/docker/php-official/8.5-alpine/conf/bin/control.sh b/docker/php-official/8.5-alpine/conf/bin/control.sh new file mode 100644 index 000000000..22d189745 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/control.sh @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +source /opt/docker/bin/config.sh + +rootCheck "$0" + +CONTROL_COMMAND="$1" +shift + +case "$CONTROL_COMMAND" in + + ## ------------------------------------------ + ## PROVISION + ## ------------------------------------------ + + ## main roles + "provision.role") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint "$1" + ;; + + "provision.role.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap "$1" + ;; + + "provision.role.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build "$1" + ;; + + "provision.role.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild "$1" + ;; + + "provision.role.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint "$1" + ;; + + ## startup roles + "provision.role.startup") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint --priority 50 "$1" + ;; + + "provision.role.startup.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --priority 50 "$1" + ;; + + "provision.role.startup.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build --priority 50 "$1" + ;; + + "provision.role.startup.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild --priority 50 "$1" + ;; + + "provision.role.startup.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint --priority 50 "$1" + ;; + + ## finish roles + "provision.role.finish") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint --priority 200 "$1" + ;; + + "provision.role.finish.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --priority 200 "$1" + ;; + + "provision.role.finish.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build --priority 200 "$1" + ;; + + "provision.role.finish.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild --priority 200 "$1" + ;; + + "provision.role.finish.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint --priority 200 "$1" + ;; + + ## ------------------------------------------ + ## Service + ## ------------------------------------------ + + "service.enable") + deprecationNotice " Please use >>docker-service-enable [service]<<" + docker-service-enable "$1" + ;; + + "service.disable") + deprecationNotice " Please use >>docker-service-disable [service]<<" + docker-service-disable "$1" + ;; + + ## ------------------------------------------ + ## Version + ## ------------------------------------------ + + "version.get") + cat /opt/docker/VERSION + ;; + + "version.require.min") + EXPECTED_VERSION="$1" + CURRENT_VERSION="$(cat /opt/docker/VERSION)" + if [ "$CURRENT_VERSION" -lt "$EXPECTED_VERSION" ]; then + echo "-----------------------------------------------------------" + echo "--- This docker image is not up2date!" + echo "--- " + echo "--- Version expected min: $EXPECTED_VERSION" + echo "--- Version current: $CURRENT_VERSION" + echo "--- " + echo "--- Run 'docker pull ' to update image" + echo "-----------------------------------------------------------" + exit 1 + fi + ;; + + "version.require.max") + EXPECTED_VERSION="$1" + CURRENT_VERSION="$(cat /opt/docker/VERSION)" + if [ "$CURRENT_VERSION" -gt "$EXPECTED_VERSION" ]; then + echo "-----------------------------------------------------------" + echo "--- This docker image is too new!" + echo "--- " + echo "--- Version expected max: $EXPECTED_VERSION" + echo "--- Version current: $CURRENT_VERSION" + echo "-----------------------------------------------------------" + exit 1 + fi + ;; + + + "buildtime.get") + cat /opt/docker/BUILDTIME + ;; + + *) + echo "[ERROR] Invalid controll command: \"${CONTROL_COMMAND}\"" + exit 1 + ;; +esac diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/cli.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/cli.sh new file mode 100644 index 000000000..fe212a8ea --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/cli.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +############################################# +## Run CLI_SCRIPT from environment variable +############################################# + +if [ -n "${CLI_SCRIPT}" ]; then + if [ -n "$APPLICATION_USER" ]; then + # Run as EFFECTIVE_USER + shift + exec gosu "${APPLICATION_USER}" ${CLI_SCRIPT} "$@" + else + # Run as root + exec ${CLI_SCRIPT} "$@" + fi +else + echo "[ERROR] No CLI_SCRIPT in in docker environment defined" + exit 1 +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/default.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/default.sh new file mode 100644 index 000000000..a1be715fe --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/default.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec "$@" diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/noop.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/noop.sh new file mode 100644 index 000000000..092d55d8b --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/noop.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +############################################# +## NOOP (no operation) +############################################# + +exec tail -f /dev/null diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/root.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/root.sh new file mode 100644 index 000000000..6fa0d063e --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/root.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +############################################# +## Root shell +############################################# + +if [ "$#" -eq 1 ]; then + ## No command, fall back to interactive shell + exec bash +else + ## Exec root command + shift + exec "$@" +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/supervisord.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/supervisord.sh new file mode 100644 index 000000000..f21489667 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.d/supervisord.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +############################################# +## Supervisord (start daemons) +############################################# + +## Start services +exec /opt/docker/bin/service.d/supervisor.sh + diff --git a/docker/php-official/8.5-alpine/conf/bin/entrypoint.sh b/docker/php-official/8.5-alpine/conf/bin/entrypoint.sh new file mode 100644 index 000000000..0489b796c --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/entrypoint.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +if [[ -z "$CONTAINER_UID" ]]; then + export CONTAINER_UID="application" +fi + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# auto elevate privileges (if container is not started as root) +if [[ "$UID" -ne 0 ]]; then + export CONTAINER_UID="$UID" + exec gosu root "$0" "$@" +fi +# remove suid bit on gosu +chmod -s /sbin/gosu + +trap 'echo sigterm ; exit' SIGTERM +trap 'echo sigkill ; exit' SIGKILL + +# sanitize input and set task +TASK="$(echo $1| sed 's/[^-_a-zA-Z0-9]*//g')" + +source /opt/docker/bin/config.sh + +createDockerStdoutStderr + +if [[ "$UID" -eq 0 ]]; then + # Only run provision if user is root + + if [ "$TASK" == "supervisord" -o "$TASK" == "noop" ]; then + # Visible provisioning + runProvisionEntrypoint + else + # Hidden provisioning + runProvisionEntrypoint > /dev/null + fi +fi + +############################# +## COMMAND +############################# + +runEntrypoints "$@" diff --git a/docker/php-official/8.5-alpine/conf/bin/provision b/docker/php-official/8.5-alpine/conf/bin/provision new file mode 100755 index 000000000..418e81dd8 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/provision @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Install ansible if not installed +if [ -z "`which ansible-playbook`" ]; then + docker-ansible-install +fi + +exec /opt/docker/bin/provision.py "$@" diff --git a/docker/php-official/8.5-alpine/conf/bin/provision.py b/docker/php-official/8.5-alpine/conf/bin/provision.py new file mode 100755 index 000000000..d367c2812 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/provision.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python + +import os +import argparse +import json +import sys +from string import Template +from subprocess import call +import tempfile +import time + +STORAGE = '/opt/docker/etc/.registry/provision.json' +PROVISION_DIR = '/opt/docker/provision/' + +PLAYBOOK_TAGS=['bootstrap', 'build', 'onbuild', 'entrypoint'] + +PLAYBOOK = Template( +"""--- + +- hosts: all + vars_files: + - ./variables-webdevops.yml + - ./variables.yml + roles: + - $roles +""") + + + +def readJson(): + ret = {} + + # create registry directory if it doesn't exists + if not os.path.exists(os.path.dirname(STORAGE)): + os.mkdir(os.path.dirname(STORAGE)) + + # try to read file + if os.path.isfile(STORAGE): + f=open(STORAGE).read() + ret = json.loads(f) + + return ret + + + +def saveJson(data): + with open(STORAGE, 'w') as f: + json.dump(data, f) + + + +def buildRoleList(tags): + json = readJson() + roleList = {} + + # fetch roles list for each tag + for tag in tags: + if tag in json: + for role in json[tag]: + roleRow = json[tag][role] + if role not in roleList: + roleList[role] = {} + + if 'tags' not in roleList[role]: + roleList[role]['tags'] = {} + + roleList[role]['role'] = role + roleList[role]['added'] = roleRow['added'] + roleList[role]['priority'] = roleRow['priority'] + roleList[role]['tags'][tag] = tag + + return roleList + + +def buildSortedRoleList(tags): + roleList = buildRoleList(tags) + + # sort list + roleList = sorted(roleList, key=lambda x: (roleList[x]['priority'], roleList[x]['added'])) + + return roleList + + + +def buildPlaybook(roleList): + ## build playbook + ret = PLAYBOOK.substitute( + roles = "\n - ".join(roleList) + ) + + return ret + + +def buildPlaybookFromArgs(args): + roleList = [] + + ## add roles from tag (if use registry is active) + if args.useRegistry and args.tags: + roleList.extend(buildSortedRoleList(args.tags)) + + ## add roles from command arguments + if args.roles: + for role in args.roles: + roleList.extend(role.split(',')) + + if roleList: + return buildPlaybook(roleList) + else: + return False + + + +def actionRun(args): + if args.playbook: + ## predefined playbook + playbook = args.playbook + else: + ## dynamic playbook + playbookContent = buildPlaybookFromArgs(args) + + if playbookContent: + f = tempfile.NamedTemporaryFile(dir=PROVISION_DIR, prefix='playbook.', suffix='.yml', delete=False) + f.write(playbookContent) + f.close() + playbook = f.name + else: + ## nothing to do + sys.exit(0) + + ## build ansible command with args + cmd = [ + 'ansible-playbook', + playbook, + '-i', 'localhost,', + '--connection=local', + ] + + if args.tags: + cmd.extend([ + '--tags=' + ','.join(args.tags) + ]) + + if args.args: + cmd.extend(args.args) + + ## run ansible + retval = call(cmd) + + ## cleanup dynamic playbook + if not args.playbook: + os.unlink(playbook) + + sys.exit(retval) + + + +def actionPlaybook(args): + playbook = buildPlaybookFromArgs(args) + + if playbook: + print playbook + else: + sys.exit(1) + + + +def actionList(args): + json = readJson() + list = {} + + for tag in args.tags: + if tag in json: + for role in json[tag]: + print role + + + +def actionAdd(args): + json = readJson() + + for tag in args.tags: + for role in args.role: + if tag not in json: + json[tag] = {} + + json[tag][role] = { + 'name': role, + 'added': int(time.time()), + 'priority': args.priority + } + + saveJson(json) + + + +def actionSummary(args): + # list all roles in each possible tag + for tag in PLAYBOOK_TAGS: + roleList = buildRoleList([tag]) + if roleList: + maxLength = len(max(roleList.keys(), key=len)) + + print "Roles in " + tag + ":" + for role in roleList: + print ' - ' + role.ljust(maxLength, ' ') + ' [priority: ' + str(roleList[role]['priority']) + ']' + print '' + + + +def main(args): + actions = { + 'list': actionList, + 'add': actionAdd, + 'summary': actionSummary, + 'playbook': actionPlaybook, + 'run': actionRun + } + + func = actions.get(args.action, lambda: "nothing") + return func(args) + + + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers( + title='subcommands', + dest='action' + ) + + ################################### + ## SUMMARY command + summary = subparsers.add_parser('summary') + + ################################### + ## RUN command + run = subparsers.add_parser('run') + run.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + run.add_argument( + '--playbook', + dest='playbook', + help='Ansible playbook' + ) + run.add_argument( + '--use-registry', + dest='useRegistry', + action='store_true', + help='Use registred roles' + ) + run.add_argument( + '--role', + dest='roles', + action='append', + help='Ansible role' + ) + run.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## PLAYBOOK command + playbook = subparsers.add_parser('playbook') + playbook.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + playbook.add_argument( + '--use-registry', + dest='useRegistry', + action='store_true', + help='Use registred roles' + ) + playbook.add_argument( + '--role', + dest='roles', + action='append', + help='Ansible tag' + ) + playbook.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## LIST command + list = subparsers.add_parser('list') + list.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + list.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## ADD command + add = subparsers.add_parser('add') + add.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + add.add_argument( + '--priority', + type=int, + default=100, + dest='priority', + help='Priority for role [default 100, 1 is most important]' + ) + add.add_argument('role', metavar='roles', nargs='+', help='Ansible roles') + + add.add_argument('args', nargs=argparse.REMAINDER) + + ## Execute + args = parser.parse_args() + main(args) diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/cron.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/cron.d/10-init.sh new file mode 100644 index 000000000..611edc9bf --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/cron.d/10-init.sh @@ -0,0 +1,16 @@ +# Install crontab files + +if [[ -d "/opt/docker/etc/cron" ]]; then + mkdir -p /etc/cron.d/ + + find /opt/docker/etc/cron -type f | while read CRONTAB_FILE; do + # fix permissions + chmod 0644 -- "$CRONTAB_FILE" + + # add newline, cron needs this + echo >> "$CRONTAB_FILE" + + # Install files + cp -a -- "$CRONTAB_FILE" "/etc/cron.d/$(basename "$CRONTAB_FILE")" + done +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/cron.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/cron.sh new file mode 100644 index 000000000..5af135768 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/cron.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_CRON_OPTS" ]]; then SERVICE_CRON_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/cron.d/" + +exec /usr/sbin/crond -f $SERVICE_CRON_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.d/10-init.sh new file mode 100644 index 000000000..836ebe2b5 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.d/10-init.sh @@ -0,0 +1,37 @@ +# Create dnsmasq.d directory if not exists +mkdir -p -- /etc/dnsmasq.d/ + +# Enable /etc/dnsmasq.d/ +go-replace --mode=lineinfile --once \ + -s 'conf-dir' -r 'conf-dir=/etc/dnsmasq.d/,*.conf' \ + -- /etc/dnsmasq.conf + +## clear dns file +echo > /etc/dnsmasq.d/webdevops.conf + +if [ ! -f /etc/resolv.conf.original ]; then + cp -a /etc/resolv.conf /etc/resolv.conf.original + + ## set forward servers + cat /etc/resolv.conf.original | grep nameserver | sed 's/nameserver /server=/' > /etc/dnsmasq.d/forward.conf + + ## set dnsmasq to main nameserver + echo "nameserver 127.0.0.1" > /etc/resolv.conf +fi + + +# Add own VIRTUAL_HOST as loopback +if [[ -n "${VIRTUAL_HOST+x}" ]]; then + # split comma by space + VIRTUAL_HOST_LIST=${VIRTUAL_HOST//,/$'\n'} + + # replace *.domain for dns specific .domain wildcard + VIRTUAL_HOST_LIST=${VIRTUAL_HOST_LIST/\*./.} + + # no support for .* + VIRTUAL_HOST_LIST=${VIRTUAL_HOST_LIST/.\*/.} + + for DOMAIN in $VIRTUAL_HOST_LIST; do + echo "address=/${DOMAIN}/127.0.0.1" >> /etc/dnsmasq.d/webdevops.conf + done +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.sh new file mode 100644 index 000000000..b8b4c12e0 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/dnsmasq.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_DNSMASQ_OPTS" ]]; then SERVICE_DNSMASQ_OPTS=""; fi +if [[ -z "$SERVICE_DNSMASQ_USER" ]]; then SERVICE_DNSMASQ_USER="root"; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/dnsmasq.d/" + +exec dnsmasq --keep-in-foreground --user="$SERVICE_DNSMASQ_USER" $SERVICE_DNSMASQ_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/10-init.sh new file mode 100644 index 000000000..7d0dadad6 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/10-init.sh @@ -0,0 +1,12 @@ +# setup user env +FPM_POOL_CONF="/opt/docker/etc/php/fpm/pool.d/application.conf" + +## Setup container uid +if [[ -n "$CONTAINER_UID" ]]; then + echo "Setting php-fpm user to $CONTAINER_UID" + go-replace --mode=line --regex \ + -s '^[\s;]*user[\s]*=' -r "user = $CONTAINER_UID" \ + -s '^[\s;]*group[\s]*=' -r "group = $CONTAINER_UID" \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/11-clear-env.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/11-clear-env.sh new file mode 100644 index 000000000..ef6fd4016 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.d/11-clear-env.sh @@ -0,0 +1,38 @@ +# +# Workaround for old php-fpm versions which don't have clear_env setting +# + +VARIABLE_LIST="; Workaround for missing clear_env feature in PHP-FPM" + +# For each exported variable +for envVariable in $(printenv|cut -f1 -d=); do + + case "$envVariable" in + "_"|"PATH"|"PWD") + ## ignore this variables + ;; + + *) + ## get content of variable + envVariableContent="${!envVariable}" + + ## php-fpm requires that env variable has to be filled with content + if [[ -n "$envVariableContent" ]]; then + ## quote quotes + envVariableContent=${envVariableContent//\"/\\\"} + + ## add to list + VARIABLE_LIST="${VARIABLE_LIST}"$'\n'"env[${envVariable}] = \"${envVariableContent}\"" + fi + ;; + esac + +done + +# Replace ;#CLEAR_ENV_WORKAROUND# with environment variable list for all php-fpm pool files +go-replace \ + -s ";#CLEAR_ENV_WORKAROUND#" -r "$VARIABLE_LIST" \ + --path=/opt/docker/etc/php/fpm/pool.d/ \ + --path-pattern='*.conf' \ + --ignore-empty + diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.sh new file mode 100644 index 000000000..15374f566 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/php-fpm.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_PHPFPM_OPTS" ]]; then SERVICE_PHPFPM_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/php-fpm.d/" + +exec /usr/local/bin/php-fpm --nodaemonize $SERVICE_PHPFPM_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.d/10-init.sh new file mode 100644 index 000000000..82574153d --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.d/10-init.sh @@ -0,0 +1,30 @@ +# force new copy of hosts there (otherwise links could be outdated) +mkdir -p /var/spool/postfix/etc +cp -f /etc/hosts /var/spool/postfix/etc/hosts +cp -f /etc/resolv.conf /var/spool/postfix/etc/resolv.conf +cp -f /etc/services /var/spool/postfix/etc/services + +go-replace --mode=line --regex -s '^[\s]*myhostname[\s]*=.*' -r "myhostname = $HOSTNAME" + +# General +go-replace --mode=lineinfile --regex \ + -s '^[\s]*myhostname[\s]*=.*.*' -r "myhostname = $HOSTNAME" \ + -s '^[\s]*inet_interfaces[\s]*=.*' -r "inet_interfaces = 127.0.0.1" \ + -- /etc/postfix/main.cf + +## REPLAYHOST +if [[ -n "${POSTFIX_RELAYHOST+x}" ]]; then + go-replace --mode=lineinfile --regex \ + -s '^[\s]*relayhost[\s]*=.*' -r "relayhost = $POSTFIX_RELAYHOST" \ + -- /etc/postfix/main.cf +fi + +## MYNETWORKS +if [[ -n "${POSTFIX_MYNETWORKS+x}" ]]; then + go-replace --mode=lineinfile --regex \ + -s '^[\s]*mynetworks[\s]*=.*' -r "mynetworks = $POSTFIX_MYNETWORKS" \ + -- /etc/postfix/main.cf +fi + +# generate aliases db +newaliases || : diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.sh new file mode 100644 index 000000000..b9e477bcd --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/postfix.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# postfix-wrapper.sh, version 0.1.0 +# +# You cannot start postfix in some foreground mode and +# it's more or less important that docker doesn't kill +# postfix and its chilren if you stop the container. +# +# Use this script with supervisord and it will take +# care about starting and stopping postfix correctly. +# +# supervisord config snippet for postfix-wrapper: +# +# [program:postfix] +# process_name = postfix +# command = /path/to/postfix-wrapper.sh +# startsecs = 0 +# autorestart = false +# + +# Init vars +if [[ -z "$SERVICE_POSTFIX_OPTS" ]]; then SERVICE_POSTFIX_OPTS=""; fi + +source /opt/docker/bin/config.sh + +trap "postfix stop" SIGINT +trap "postfix stop" SIGTERM +trap "postfix reload" SIGHUP + +includeScriptDir "/opt/docker/bin/service.d/postfix.d/" + +# start postfix +postfix start $SERVICE_POSTFIX_OPTS + +# lets give postfix some time to start +sleep 3 + +# wait until postfix is dead (triggered by trap) +if [[ -f /var/spool/postfix/pid/master.pid ]]; then + while kill -0 "$(cat /var/spool/postfix/pid/master.pid 2>/dev/null)" &>/dev/null; do + sleep 5 + done +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.d/10-init.sh new file mode 100644 index 000000000..f2b600312 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.d/10-init.sh @@ -0,0 +1,7 @@ +# Init ssh privilege separation directory +mkdir -p /var/run/sshd +chown root:root /var/run/sshd +chmod 755 /var/run/sshd + +# generate host keys +ssh-keygen -A diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.sh new file mode 100644 index 000000000..f01e87ab3 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/ssh.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SSH_OPTS" ]]; then SERVICE_SSH_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/ssh.d/" + +exec /usr/sbin/sshd -D $SERVICE_SSH_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.sh new file mode 100644 index 000000000..5a82a13ff --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/supervisor.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SUPERVISOR_OPTS" ]]; then SERVICE_SUPERVISOR_OPTS=""; fi +if [[ -z "$SERVICE_SUPERVISOR_USER" ]]; then SERVICE_SUPERVISOR_USER="root"; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/supervisor.d/" + +exec supervisord -c /opt/docker/etc/supervisor.conf --logfile /dev/null --pidfile /dev/null --user "$SERVICE_SUPERVISOR_USER" $SERVICE_SUPERVISOR_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.d/10-init.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.d/10-init.sh new file mode 100644 index 000000000..326207e52 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.d/10-init.sh @@ -0,0 +1,10 @@ +# If /dev/log is either a named pipe or it was placed there accidentally, +# e.g. because of the issue documented at https://github.com/phusion/baseimage-docker/pull/25, +# then we remove it. +if [ ! -S /dev/log ]; then rm -f /dev/log; fi +if [ ! -S /var/lib/syslog-ng/syslog-ng.ctl ]; then rm -f /var/lib/syslog-ng/syslog-ng.ctl; fi + +if [[ ! -p /docker.stdout ]]; then + # Switch to file (tty docker mode) + go-replace -s 'pipe("/docker.stdout")' -r 'file("/docker.stdout")' -- /opt/docker/etc/syslog-ng/syslog-ng.conf +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.sh b/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.sh new file mode 100644 index 000000000..8e1358c1b --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/service.d/syslog-ng.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SYSLOG_OPTS" ]]; then SERVICE_SYSLOG_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +exec syslog-ng -F --no-caps -p /var/run/syslog-ng.pid $SYSLOGNG_OPTS $SERVICE_SYSLOG_OPTS diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/container-file-auto-restore b/docker/php-official/8.5-alpine/conf/bin/usr-bin/container-file-auto-restore new file mode 100644 index 000000000..a41fcb3c8 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/container-file-auto-restore @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o pipefail ## trace ERR through pipes +set -o errtrace ## trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +if [[ "$#" -ne 1 ]]; then + echo "Usage: $0 " + exit 1 +fi + +SOURCE_FILE="$1" +BACKUP_FILE="$(dirname "$1")/.$(basename "$1").bak" + +if [[ -f "$BACKUP_FILE" ]]; then + ## Backup file exists + ## -> container was restarted + ## -> restoring configuration + cp -a -- "$BACKUP_FILE" "$SOURCE_FILE" +else + ## Backup file DOESN'T exists + ## -> container first startup + ## -> backup configuration + cp -a -- "$SOURCE_FILE" "$BACKUP_FILE" +fi diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-ansible-install b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-ansible-install new file mode 100644 index 000000000..dfb06fc7d --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-ansible-install @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install \ + python-minimal \ + python-setuptools \ + python-pip \ + python-paramiko \ + python-jinja2 \ + python-dev \ + libffi-dev \ + libssl-dev \ + build-essential + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + apt-get purge -y -f --force-yes \ + python-dev \ + build-essential \ + libssl-dev \ + libffi-dev + + chmod 750 /usr/local/bin/ansible* + ;; + + RedHat) + yum-install \ + epel-release \ + PyYAML \ + python-jinja2 \ + python-httplib2 \ + python-keyczar \ + python-paramiko \ + python-setuptools \ + python-setuptools-devel \ + libffi \ + python-devel \ + libffi-devel + easy_install pip + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + yum erase -y python-devel + + chmod 750 /usr/bin/ansible* + ;; + + Alpine) + apk-install \ + python \ + python-dev \ + py-setuptools \ + py-crypto \ + py2-pip \ + py-cparser \ + py-cryptography \ + py-markupsafe \ + py-cffi \ + py-yaml \ + py-jinja2 \ + py-paramiko + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + apk del python-dev + + chmod 750 /usr/bin/ansible* + ;; +esac +docker-image-cleanup diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-cronjob b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-cronjob new file mode 100644 index 000000000..2746c75f5 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-cronjob @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +source /opt/docker/bin/config.sh + +rootCheck "$0" + +if [[ "$#" -eq 0 ]]; then + echo "Usage: $0 ''" + exit 1 +fi + +# create crontab file +touch /etc/cron.d/webdevops-docker +chmod 0644 /etc/cron.d/webdevops-docker + +for CRONJOB_LINES in "$@"; do + echo "$CRONJOB_LINES" >> /etc/cron.d/webdevops-docker +done + +# Add required newline at end +echo >> /etc/cron.d/webdevops-docker diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-php-setting b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-php-setting new file mode 100644 index 000000000..30bbb979f --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-php-setting @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# Defaults +PHP_INI_FILE="/opt/docker/etc/php/php.ini" +PHP_VALUE_RAW=0 +PHP_KEY= +PHP_VALUE= + +for arg in "$@"; do + case "$arg" in + --raw) + PHP_VALUE_RAW=1 + shift + ;; + esac +done + +if [[ "$#" -le 2 ]]; then + echo "Usage: $(basename "$0") [--raw] " + exit 1 +fi + +PHP_SETTING_KEY=$1 +shift +PHP_SETTING_VALUE="$@" + +if [[ "$PHP_VALUE_RAW" -eq 0 ]]; then + case "$PHP_SETTING_VALUE" in + ''|*[!0-9]*) + # non numeric + PHP_SETTING_VALUE="\"${PHP_SETTING_VALUE}\"" + ;; + esac +fi + + +echo "$(basename "$0"): Setting php setting: ${PHP_SETTING_KEY} = ${PHP_SETTING_VALUE}" +echo "${PHP_SETTING_KEY} = ${PHP_SETTING_VALUE}" >> "$PHP_INI_FILE" + diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-provision b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-provision new file mode 100644 index 000000000..4ee715c64 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-provision @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# wrapper +exec /opt/docker/bin/provision "$@" diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service new file mode 100644 index 000000000..70a493767 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +if [[ "$#" -le 1 ]]; then + echo "Usage: $0 " + exit 1 +fi + +SERVICE_COMMAND=$1 +shift + +for SERVICE in "$@"; do + RUN_FILE="/opt/docker/bin/service.d/${SERVICE}.sh" + SERVICE_FILE="/opt/docker/etc/supervisor.d/${SERVICE}.conf" + PROVISION_FILE="/opt/docker/provision/service.d/${SERVICE}.sh" + + case "$SERVICE_COMMAND" in + enable) + # Run on demand installation/provisioning + if [[ -f "$PROVISION_FILE" ]]; then + echo "Running provisioning for ${SERVICE}, please wait..." + + ## execute scripts + . "$PROVISION_FILE" + + ## remove directory (one run time) + rm -f -- "$PROVISION_FILE" + fi + + ## Enable service + if [[ -f "$SERVICE_FILE" ]]; then + go-replace --mode=lineinfile \ + -s 'autostart =' -r 'autostart = true' \ + -- "$SERVICE_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})" + exit 1 + fi + ;; + + disable) + ## Disable service + if [[ -f "$SERVICE_FILE" ]]; then + go-replace --mode=lineinfile \ + -s 'autostart =' -r 'autostart = false' \ + -- "$SERVICE_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})" + exit 1 + fi + ;; + + install) + # Run on demand installation/provisioning + if [[ -f "$PROVISION_FILE" ]]; then + echo "Running provisioning for ${SERVICE}, please wait..." + + ## execute scripts + . "$PROVISION_FILE" + + ## remove directory (one run time) + rm -f -- "$PROVISION_FILE" + fi + ;; + + run) + if [[ -f "$RUN_FILE" ]]; then + exec "$RUN_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${RUN_FILE})" + exit 1 + fi + ;; + + stop|start|restart|status|pid|check) + service "${SERVICE}" "$SERVICE_COMMAND" + ;; + + *) + echo "[ERROR] $SERVICE_COMMAND is not a valid command" + exit 1 + ;; + esac +done + diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-disable b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-disable new file mode 100644 index 000000000..991f249c8 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-disable @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec docker-service disable "$@" diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-enable b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-enable new file mode 100644 index 000000000..da99c9aeb --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/docker-service-enable @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +exec docker-service enable "$@" + diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/service b/docker/php-official/8.5-alpine/conf/bin/usr-bin/service new file mode 100755 index 000000000..69874cb80 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/service @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# Root check +if [ "$(/usr/bin/whoami)" != "root" ]; then + echo "[ERROR] Must be run as root" + exit 1 +fi + +function serviceHelp() { + echo "Usage: $(basename "$0") " +} + +function getServicePid() { + local serviceName="$1" + local servicePid=$(supervisorctl pid "${serviceName}:${serviceName}d") + + if [[ -z "$servicePid" ]] || [[ "$servicePid" == "0" ]]; then + echo "not running" + exit 1 + fi + + echo $servicePid +} + +# Param check +if [ "$#" -lt 2 ]; then + echo "[ERROR] Missing parameters" + serviceHelp + exit 1 +fi + +############################# +# Param init +############################# + +SERVICENAME="$1" +ACTION="$2" + +############################# +# Service aliases +############################# +case "$SERVICENAME" in + apache2|httpd) + SERVICENAME="apache" + ;; +esac + +############################# +# Action runner +############################# +case "$ACTION" in + stop|start|restart|status) + exec supervisorctl "$ACTION" "${SERVICENAME}:${SERVICENAME}d" + ;; + + pid) + echo $(getServicePid "${SERVICENAME}") + ;; + + check) + FIRST_PID=$(getServicePid "${SERVICENAME}") + sleep 5 + SECOND_PID=$(getServicePid "${SERVICENAME}") + + if [[ "$FIRST_PID" == "$SECOND_PID" ]]; then + echo "ok" + exit 0 + else + echo "not running" + exit 1 + fi + ;; + + + *) + echo "[ERROR] Invalid action" + serviceHelp + exit 1 + ;; + +esac diff --git a/docker/php-official/8.5-alpine/conf/bin/usr-bin/version-compare b/docker/php-official/8.5-alpine/conf/bin/usr-bin/version-compare new file mode 100644 index 000000000..ca450b0e9 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/bin/usr-bin/version-compare @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +function versionCompare () { + if [[ $1 == $2 ]] + then + echo -n '=' + return + fi + local IFS=. + local i ver1=($1) ver2=($2) + # fill empty fields in ver1 with zeros + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) + do + ver1[i]=0 + done + for ((i=0; i<${#ver1[@]}; i++)) + do + if [[ -z ${ver2[i]} ]] + then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})) + then + echo -n '>' + return + fi + if ((10#${ver1[i]} < 10#${ver2[i]})) + then + echo -n '<' + return + fi + done + + echo -n '=' +} + +versionCompare "$1" "$2" diff --git a/docker/php-official/8.5-alpine/conf/etc/cron/.gitkeep b/docker/php-official/8.5-alpine/conf/etc/cron/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/etc/logrotate.d/php5-fpm b/docker/php-official/8.5-alpine/conf/etc/logrotate.d/php5-fpm new file mode 100644 index 000000000..e6ef4b123 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/logrotate.d/php5-fpm @@ -0,0 +1,12 @@ +/var/log/php5-fpm/fpm.log +/var/log/php5-fpm/access.log +/var/log/php5-fpm/slow.log +/var/log/php5-fpm/error.log { + missingok + notifempty + sharedscripts + delaycompress + postrotate + /bin/kill -SIGUSR1 `cat /var/run/php5-fpm.pid` 2>/dev/null || true + endscript +} diff --git a/docker/php-official/8.5-alpine/conf/etc/logrotate.d/syslog-ng b/docker/php-official/8.5-alpine/conf/etc/logrotate.d/syslog-ng new file mode 100644 index 000000000..4a6f9c54e --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/logrotate.d/syslog-ng @@ -0,0 +1,38 @@ +/var/log/syslog +{ + rotate 7 + daily + missingok + notifempty + delaycompress + compress + postrotate + /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` > /dev/null + endscript +} + +/var/log/mail.info +/var/log/mail.warn +/var/log/mail.err +/var/log/mail.log +/var/log/daemon.log +/var/log/kern.log +/var/log/auth.log +/var/log/user.log +/var/log/lpr.log +/var/log/cron.log +/var/log/debug +/var/log/messages +{ + rotate 4 + weekly + missingok + notifempty + compress + delaycompress + sharedscripts + postrotate + /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` > /dev/null + supervisorctl restart syslog-ng-stdout > /dev/null + endscript +} \ No newline at end of file diff --git a/docker/php-official/8.5-alpine/conf/etc/php/conf.d/.gitkeep b/docker/php-official/8.5-alpine/conf/etc/php/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/etc/php/fpm/.gitkeep b/docker/php-official/8.5-alpine/conf/etc/php/fpm/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/etc/php/php.ini b/docker/php-official/8.5-alpine/conf/etc/php/php.ini new file mode 100644 index 000000000..447212118 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/php/php.ini @@ -0,0 +1 @@ +; placeholder diff --git a/docker/php-official/8.5-alpine/conf/etc/php/php.webdevops.ini b/docker/php-official/8.5-alpine/conf/etc/php/php.webdevops.ini new file mode 100644 index 000000000..aa1545ab8 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/php/php.webdevops.ini @@ -0,0 +1,34 @@ +; ------------------------------------- +; Docker Webdevops PHP configuration +; ------------------------------------- + +; this file will overwrite default php.ini settings + +display_errors = 0 +log_errors = 1 + +short_open_tag = Off +variables_order = 'GPCS' +request_order = 'GP' + +allow_url_fopen = On +allow_url_include = Off + +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +post_max_size = 50M +upload_max_filesize = 50M +max_input_vars = 5000 + +expose_php = Off + +date.timezone = UTC + +mysql.default_host = mysql +mysqli.default_host = mysql + +opcache.memory_consumption = 256 +opcache.interned_strings_buffer = 16 +opcache.max_accelerated_files = 7963 +opcache.fast_shutdown = 1 diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.conf new file mode 100644 index 000000000..479e0db08 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.conf @@ -0,0 +1,20 @@ +[supervisord] +nodaemon=true + +[unix_http_server] +file = /.supervisor.sock +chmod = 0700 +chown = root:root +username = root +password = {SHA}e982f17bcbe0f724063b708a4f76db211a999304 + +[supervisorctl] +serverurl = unix:///.supervisor.sock +username = root +password = docker + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[include] +files = /opt/docker/etc/supervisor.d/*.conf diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/.gitkeep b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/cron.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/cron.conf new file mode 100644 index 000000000..ef0a71678 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/cron.conf @@ -0,0 +1,14 @@ +[group:cron] +programs=crond +priority=25 + +[program:crond] +command = /opt/docker/bin/service.d/cron.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/dnsmasq.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/dnsmasq.conf new file mode 100644 index 000000000..9832ffca7 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/dnsmasq.conf @@ -0,0 +1,14 @@ +[group:dnsmasq] +programs=dnsmasqd +priority=15 + +[program:dnsmasqd] +command = /opt/docker/bin/service.d/dnsmasq.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/php-fpm.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/php-fpm.conf new file mode 100644 index 000000000..5781f5b0a --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/php-fpm.conf @@ -0,0 +1,15 @@ +[group:php-fpm] +programs=php-fpmd +priority=20 + +[program:php-fpmd] +command = /opt/docker/bin/service.d/php-fpm.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/postfix.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/postfix.conf new file mode 100644 index 000000000..b8d70bb40 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/postfix.conf @@ -0,0 +1,15 @@ +[group:postfix] +programs=postfixd +priority=30 + +[program:postfixd] +directory = /etc/postfix +command = /opt/docker/bin/service.d/postfix.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/ssh.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/ssh.conf new file mode 100644 index 000000000..0ecd798d6 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/ssh.conf @@ -0,0 +1,14 @@ +[group:ssh] +programs=sshd +priority=30 + +[program:sshd] +command = /opt/docker/bin/service.d/ssh.sh +process_name=%(program_name)s +startsecs=0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5-alpine/conf/etc/supervisor.d/syslog.conf b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/syslog.conf new file mode 100644 index 000000000..20d1e238c --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/supervisor.d/syslog.conf @@ -0,0 +1,13 @@ +[group:syslog] +programs=syslogd +priority=10 + +[program:syslogd] +command = /opt/docker/bin/service.d/syslog-ng.sh +process_name=%(program_name)s +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5-alpine/conf/etc/syslog-ng/syslog-ng.conf b/docker/php-official/8.5-alpine/conf/etc/syslog-ng/syslog-ng.conf new file mode 100644 index 000000000..c69841581 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/etc/syslog-ng/syslog-ng.conf @@ -0,0 +1,48 @@ +@version: 3.5 + +template t_isostamp { + # syslog-t_isostamp START + template("[SYSLOG] $MSGHDR$MSG\n"); + # syslog-t_isostamp END +}; + +options { + # syslog-options START + file-template(t_isostamp); + chain_hostnames(off); + flush_lines(0); + use-dns(no); + use_fqdn(no); + owner("root"); + group("adm"); + perm(0640); + stats_freq(0); + # syslog-options START +}; + +source s_src { + # syslog-s_src START + unix-stream("/dev/log"); + internal(); + # syslog-s_src END +}; + +filter f_filter { + # syslog-f_filter START + not facility(auth, authpriv); + # syslog-f_filter END +}; + +destination d_all { + # syslog-d_all START + pipe("/docker.stdout"); + # syslog-d_all END +}; + +log { + # syslog-log START + source(s_src); + filter(f_filter); + destination(d_all); + # syslog-log START +}; diff --git a/docker/php-official/8.5-alpine/conf/provision/ansible.cfg b/docker/php-official/8.5-alpine/conf/provision/ansible.cfg new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-entrypoint.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-entrypoint.sh new file mode 100644 index 000000000..413e7b37c --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-entrypoint.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Link main entrypoint script to /entrypoint +ln -sf /opt/docker/bin/entrypoint.sh /entrypoint + +# Link entrypoint cmd shortcut conf directory to /entrypoint.cmd +ln -sf /opt/docker/bin/entrypoint.d /entrypoint.cmd + +# Create /entrypoint.d +mkdir -p /entrypoint.d +chmod 700 /entrypoint.d +chown root:root /entrypoint.d + + diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-permissions.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-permissions.sh new file mode 100644 index 000000000..20d602bdd --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-permissions.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash + diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-php-init.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-php-init.sh new file mode 100644 index 000000000..db0141b8f --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-php-init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) +IMAGE_FAMILY=$(docker-image-info family) diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-supervisor.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-supervisor.sh new file mode 100644 index 000000000..311daee4c --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-supervisor.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Remove /usr/sbin/service (images have custom service script) +rm -rf /usr/sbin/service + +# Remove existing supervisor configuration +rm -rf -- /etc/supervisor* + +# Link supervisor configuration script +ln -sf /opt/docker/etc/supervisor.conf /etc/supervisord.conf diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-user-application.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-user-application.sh new file mode 100644 index 000000000..7a7b42f6b --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/10-user-application.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Add group +addgroup -g "$APPLICATION_GID" "$APPLICATION_GROUP" + +# Add user +adduser -D -u "$APPLICATION_UID" -h "/home/application" -s /bin/bash -G $APPLICATION_GROUP "$APPLICATION_USER" + diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/11-php-conf.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/11-php-conf.sh new file mode 100644 index 000000000..ee56ccaae --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/11-php-conf.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +PHP_CLEAR_ENV_AVAILABLE=1 + +PHP_ETC_DIR=/usr/local/etc/php +PHP_MAIN_CONF=/usr/local/etc/php-fpm.conf +PHP_POOL_CONF=www.conf +PHP_POOL_DIR=/usr/local/etc/php-fpm.d +PHP_FPM_BIN=/usr/local/sbin/php-fpm +PHP_MOD_INI_DIR=/usr/local/etc/php/conf.d diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-app.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-app.sh new file mode 100644 index 000000000..749966b67 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-app.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Create /app folder +mkdir -p /app +chown "$APPLICATION_USER":"$APPLICATION_GROUP" /app diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh new file mode 100644 index 000000000..121788e60 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# Rename pool file file to application.conf +if [[ ! -f "/opt/docker/etc/php/fpm/pool.d/application.conf" ]]; then + # Move php-fpm pool directory file to /opt/docker/etc/php/ + mv -- "$PHP_POOL_DIR" /opt/docker/etc/php/fpm/pool.d + + mv -- "/opt/docker/etc/php/fpm/pool.d/${PHP_POOL_CONF}" /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +# Remove php-fpm pool directory +rm -rf -- "$PHP_POOL_DIR" + +# Symlink php-fpm pool file to original destination +ln -sf -- /opt/docker/etc/php/fpm/pool.d "$PHP_POOL_DIR" + +# Configure php-fpm pool (application.conf) +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*catch_workers_output[\s]*=' -r 'catch_workers_output = yes' \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "[php-fpm:access] %R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"' \ + -s '^[\s;]*access.log[\s]*=' -r 'access.log = /docker.stdout' \ + -s '^[\s;]*slowlog[\s]*=' -r 'slowlog = /docker.stderr' \ + -s '^[\s;]*php_admin_value\[error_log\][\s]*=' -r 'php_admin_value[error_log] = /docker.stderr' \ + -s '^[\s;]*php_admin_value\[log_errors\][\s]*=' -r 'php_admin_value[log_errors] = on' \ + -s '^[\s;]*listen.allowed_clients[\s]*=' -r ";listen.allowed_clients" \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +# Fix user setting +go-replace --mode=line --regex \ + -s '^[\s;]*user[\s]*=' -r "user = $APPLICATION_USER" \ + -s '^[\s;]*group[\s]*=' -r "group = $APPLICATION_GROUP" \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + +if [[ "$PHP_CLEAR_ENV_AVAILABLE" -eq 1 ]]; then + # Clear env setting available, disable clearing of environment variables + go-replace --mode=lineinfile --regex \ + -s '^[\s;]*clear_env[\s]*=' -r 'clear_env = no' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + rm -f /opt/docker/bin/service.d/php-fpm.d/11-clear-env.sh +else + # Append clear env workaround in php-fpm pool (old php-fpm versions) + echo ';#CLEAR_ENV_WORKAROUND#' >> /opt/docker/etc/php/fpm/pool.d/application.conf + +fi diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm.sh new file mode 100644 index 000000000..873ddf608 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php-fpm.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Link main php-fpm binary +ln -sf -- "$PHP_FPM_BIN" /usr/local/bin/php-fpm + +# Move php-fpm main file to /opt/docker/etc/php/fpm/ and create symlink +if [[ ! -f /opt/docker/etc/php/fpm/php-fpm.conf ]]; then + mv -- "$PHP_MAIN_CONF" /opt/docker/etc/php/fpm/php-fpm.conf +else + rm -f -- "PHP_MAIN_CONF" +fi +ln -sf -- /opt/docker/etc/php/fpm/php-fpm.conf "$PHP_MAIN_CONF" + +# Configure php-fpm main (all versions) +go-replace --mode=lineinfile --regex \ + --lineinfile-after='\[global\]' \ + -s '^[\s;]*error_log[\s]*=' -r 'error_log = /docker.stderr' \ + -s '^[\s;]*pid[\s]*=' -r 'pid = /var/run/php-fpm.pid' \ + -- /opt/docker/etc/php/fpm/php-fpm.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + +fi + +if [[ "$(version-compare "$PHP_VERSION" "5.99.999")" == "<" ]]; then + # Configure php-fpm main (php 5.x) + go-replace --mode=lineinfile --regex \ + --lineinfile-after='\[global\]' \ + -s '^[\s;]*daemonize[\s]*=' -r 'daemonize = no' \ + -- /opt/docker/etc/php/fpm/php-fpm.conf +fi diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php.sh new file mode 100644 index 000000000..71caa48d3 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/20-setup-php.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +case "$IMAGE_FAMILY" in + Debian|Ubuntu|Alpine) + # Register webdevops ini + ln -sf "/opt/docker/etc/php/php.webdevops.ini" "${PHP_ETC_DIR}/conf.d/98-webdevops.ini" + + # Register custom php ini + ln -sf "/opt/docker/etc/php/php.ini" "${PHP_ETC_DIR}/conf.d/99-docker.ini" + ;; +esac diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/30-setup-ioncube.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/30-setup-ioncube.sh new file mode 100644 index 000000000..4a348a38a --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/30-setup-ioncube.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +if [ $IMAGE_FAMILY == "Alpine" ]; then + echo "Skipping ionCube installation on Alpine" + return +fi + +echo "Installing ionCube loader" + +DOWNLOAD_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz" +TMP_FILE="/tmp/ioncube_loaders.tar.gz" + +echo "Downloading ..." +curl -sS ${DOWNLOAD_URL} -o ${TMP_FILE} +echo "Unpacking ..." +tar -xzf ${TMP_FILE} -C /tmp + +PHP_VERSION=`php -v | head -1 | grep -o 'PHP [0-9].[0-9]' | sed -r 's/PHP //g'` +PHP_EXTENSION_DIR=`php -i | grep -o -m 1 'extension_dir .* =' | sed -r 's/extension_dir => //g' | sed -r 's/ =//g'` +MOD_INI="${PHP_MOD_INI_DIR}/00-ioncube.ini" +SO_FILE="${PHP_EXTENSION_DIR}/ioncube_loader_lin_${PHP_VERSION}.so" + +echo "PHP-VERSION: ${PHP_VERSION}" +echo "PHP-EXTENSION-DIR: ${PHP_EXTENSION_DIR}" +if [[ ! -f "/tmp/ioncube/ioncube_loader_lin_${PHP_VERSION}.so" ]]; then + echo "There is no ioncube available for PHP${PHP_VERSION}, skipping installation" +else + echo "Installing ${SO_FILE}" + cp "/tmp/ioncube/ioncube_loader_lin_${PHP_VERSION}.so" ${SO_FILE} + + echo "Writing module ini" + echo "[ioncube]" > ${MOD_INI} + echo "zend_extension = ${SO_FILE}" >> ${MOD_INI} + echo "; priority=01" >> ${MOD_INI} + + echo "Cleaning up" + rm -rf $TMP_FILE + rm -rf /tmp/ioncube + + echo "Enabling ionCube PHP module" + case "$IMAGE_FAMILY" in + Debian|Ubuntu) + # Enable ionCube (if available) + if [[ -f "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" ]]; then + ln -sf "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" "${PHP_ETC_DIR}/cli/conf.d/00-ioncube.ini" + ln -sf "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" "${PHP_ETC_DIR}/fpm/conf.d/00-ioncube.ini" + fi + ;; + esac +fi diff --git a/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/90-cleanup.sh b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/90-cleanup.sh new file mode 100644 index 000000000..3ca393da6 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/bootstrap.d/90-cleanup.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# Remove default cronjobs +rm -f -- \ + /etc/cron.daily/logrotate \ + /etc/cron.daily/apt-compat \ + /etc/cron.daily/dpkg \ + /etc/cron.daily/passwd \ + /etc/cron.daily/0yum-daily.cron \ + /etc/cron.daily/logrotate \ + /etc/cron.hourly/0yum-hourly.cron \ + /etc/periodic/daily/logrotate diff --git a/docker/php-official/8.5-alpine/conf/provision/build.d/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/build.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/build.d/10-cleanup.sh b/docker/php-official/8.5-alpine/conf/provision/build.d/10-cleanup.sh new file mode 100644 index 000000000..41031b784 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/build.d/10-cleanup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +## remove logs (each bootstrap) +rm -rf -- /var/log/* +rm -rf -- /var/tmp/* +rm -rf -- /tmp/* +rm -rf -- /root/.profile diff --git a/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/05-permissions.sh b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/05-permissions.sh new file mode 100644 index 000000000..6f77d8e40 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/05-permissions.sh @@ -0,0 +1,2 @@ +# Fix rights of /tmp (can be a volume) +chmod 1777 /tmp diff --git a/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php-fpm.sh b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php-fpm.sh new file mode 100644 index 000000000..5ab722cf7 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php-fpm.sh @@ -0,0 +1,80 @@ +####################################### +### FPM MAIN +####################################### + +container-file-auto-restore "/opt/docker/etc/php/fpm/php-fpm.conf" + +echo '' >> /opt/docker/etc/php/fpm/php-fpm.conf +echo '; container env settings' >> /opt/docker/etc/php/fpm/php-fpm.conf +echo '[global]' >> /opt/docker/etc/php/fpm/php-fpm.conf + +if [[ -n "${FPM_PROCESS_MAX+x}" ]]; then + echo "process.max = ${FPM_PROCESS_MAX}" >> /opt/docker/etc/php/fpm/php-fpm.conf +fi + +# General fpm main setting +for ENV_VAR in $(envListVars "fpm\.global\."); do + env_key=${ENV_VAR#fpm.global.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/fpm/php-fpm.conf +done + +####################################### +### FPM POOL +####################################### + +container-file-auto-restore "/opt/docker/etc/php/fpm/pool.d/application.conf" + +echo '' >> /opt/docker/etc/php/fpm/pool.d/application.conf +echo '; container env settings' >> /opt/docker/etc/php/fpm/pool.d/application.conf + +# General fpm pool setting +for ENV_VAR in $(envListVars "fpm\.pool\."); do + env_key=${ENV_VAR#fpm.pool.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +done + + +if [[ -n "${FPM_PM_MAX_CHILDREN+x}" ]]; then + echo "pm.max_children = ${FPM_PM_MAX_CHILDREN}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_START_SERVERS+x}" ]]; then + echo "pm.start_servers = ${FPM_PM_START_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_MIN_SPARE_SERVERS+x}" ]]; then + echo "pm.min_spare_servers = ${FPM_PM_MIN_SPARE_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_MAX_SPARE_SERVERS+x}" ]]; then + echo "pm.max_spare_servers = ${FPM_PM_MAX_SPARE_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PROCESS_IDLE_TIMEOUT+x}" ]]; then + echo "pm.process_idle_timeout = ${FPM_PROCESS_IDLE_TIMEOUT}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_MAX_REQUESTS+x}" ]]; then + echo "pm.max_requests = ${FPM_MAX_REQUESTS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_REQUEST_TERMINATE_TIMEOUT+x}" ]]; then + echo "request_terminate_timeout = ${FPM_REQUEST_TERMINATE_TIMEOUT}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_RLIMIT_FILES+x}" ]]; then + echo "rlimit_files = ${FPM_RLIMIT_FILES}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_RLIMIT_CORE+x}" ]]; then + echo "rlimit_core = ${FPM_RLIMIT_CORE}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +# Workaround for official PHP images +if [[ -n "${PHP_SENDMAIL_PATH+x}" ]]; then + echo "php_admin_value[sendmail_path] = ${PHP_SENDMAIL_PATH}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi diff --git a/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php.sh b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php.sh new file mode 100644 index 000000000..2e208fb85 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/entrypoint.d/20-php.sh @@ -0,0 +1,75 @@ +container-file-auto-restore "/opt/docker/etc/php/php.webdevops.ini" + +echo '' >> /opt/docker/etc/php/php.webdevops.ini +echo '; container env settings' >> /opt/docker/etc/php/php.webdevops.ini + +# General php setting +for ENV_VAR in $(envListVars "php\."); do + env_key=${ENV_VAR#php.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/php.webdevops.ini +done + + +if [[ -n "${PHP_DATE_TIMEZONE+x}" ]]; then + echo "date.timezone = ${PHP_DATE_TIMEZONE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_DISPLAY_ERRORS+x}" ]]; then + echo "display_errors = ${PHP_DISPLAY_ERRORS}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_MEMORY_LIMIT+x}" ]]; then + echo "memory_limit = ${PHP_MEMORY_LIMIT}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_MAX_EXECUTION_TIME+x}" ]]; then + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_POST_MAX_SIZE+x}" ]]; then + echo "post_max_size = ${PHP_POST_MAX_SIZE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_UPLOAD_MAX_FILESIZE+x}" ]]; then + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_MEMORY_CONSUMPTION+x}" ]]; then + echo "opcache.memory_consumption = ${PHP_OPCACHE_MEMORY_CONSUMPTION}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_MAX_ACCELERATED_FILES+x}" ]]; then + echo "opcache.max_accelerated_files = ${PHP_OPCACHE_MAX_ACCELERATED_FILES}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_VALIDATE_TIMESTAMPS+x}" ]]; then + echo "opcache.validate_timestamps = ${PHP_OPCACHE_VALIDATE_TIMESTAMPS}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_REVALIDATE_FREQ+x}" ]]; then + echo "opcache.revalidate_freq = ${PHP_OPCACHE_REVALIDATE_FREQ}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_INTERNED_STRINGS_BUFFER+x}" ]]; then + echo "opcache.interned_strings_buffer = ${PHP_OPCACHE_INTERNED_STRINGS_BUFFER}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +# Workaround for official PHP images +if [[ -n "${PHP_SENDMAIL_PATH+x}" ]]; then + echo "sendmail_path = ${PHP_SENDMAIL_PATH}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +# Disable all PHP mods specified in PHP_DISMOD as comma separated list +if [[ -n "${PHP_DISMOD+x}" ]]; then + ini_dir_cli=$(php -i | grep 'Scan this dir for additional .ini files' | cut -c44-) + ini_dir_fpm=$(php-fpm -i | grep 'Scan this dir for additional .ini files' | cut -c44-) + for DISABLE_MOD in ${PHP_DISMOD//,/ }; do + rm -f ${ini_dir_cli}/*${DISABLE_MOD}* + rm -f ${ini_dir_fpm}/*${DISABLE_MOD}* + done +fi + +# Link composer version accordingly +ln -sf /usr/local/bin/composer${COMPOSER_VERSION:-2} /usr/local/bin/composer diff --git a/docker/php-official/8.5-alpine/conf/provision/onbuild.d/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/onbuild.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/roles/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/roles/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/.gitkeep b/docker/php-official/8.5-alpine/conf/provision/service.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/cron.sh b/docker/php-official/8.5-alpine/conf/provision/service.d/cron.sh new file mode 100644 index 000000000..bd8a54781 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/service.d/cron.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install cron + ;; + + RedHat) + yum-install cronie + ;; +esac diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/dnsmasq.sh b/docker/php-official/8.5-alpine/conf/provision/service.d/dnsmasq.sh new file mode 100644 index 000000000..9e5c3228c --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/service.d/dnsmasq.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install dnsmasq + ;; + + RedHat) + yum-install dnsmasq + ;; + + Alpine) + apk-install dnsmasq + ;; +esac + +# Configuration +go-replace --mode=line \ + -s '^[\s]*user[\s]*=' -r 'user = root' \ + -s '^[\s]*conf-dir[\s]*=' -r 'conf-dir = /etc/dnsmasq.d' \ + -- /etc/dnsmasq.conf diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/postfix.sh b/docker/php-official/8.5-alpine/conf/provision/service.d/postfix.sh new file mode 100644 index 000000000..a8c7cc61b --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/service.d/postfix.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install postfix + ;; + + RedHat) + yum-install postfix + + # Fix mysql lib + if [[ ! -f /lib64/libmysqlclient.so.18 ]] && [[ -f /usr/lib64/mysql/libmysqlclient.so.18 ]]; then + ln -s /usr/lib64/mysql/libmysqlclient.so.18 /lib64/libmysqlclient.so.18 + fi + ;; + + Alpine) + apk-install postfix + ;; +esac + +# Configuration +go-replace --mode=line \ + -s '^[\s]*mydestination[\s]*=' -r 'mydestination = ' \ + -s '^[\s]*message_size_limit[\s]*=' -r 'message_size_limit = 15240000' \ + -s '^[\s]*smtp_use_tls[\s]*=' -r 'smtp_use_tls = yes' \ + -s '^[\s]*smtp_tls_security_level[\s]*=' -r 'smtp_tls_security_level = may' \ + -s '^[\s]*myhostname[\s]*=' -r '# myhostname' \ + -- /etc/postfix/main.cf diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/ssh.sh b/docker/php-official/8.5-alpine/conf/provision/service.d/ssh.sh new file mode 100644 index 000000000..63d7a9f3a --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/service.d/ssh.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install openssh-server + ;; + + RedHat) + yum-install openssh-server + ;; + + Alpine) + apk-install openssh + ;; +esac diff --git a/docker/php-official/8.5-alpine/conf/provision/service.d/syslog.sh b/docker/php-official/8.5-alpine/conf/provision/service.d/syslog.sh new file mode 100644 index 000000000..675d0b061 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/service.d/syslog.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install syslog-ng syslog-ng-core + ;; + + RedHat) + yum-install syslog-ng + + # remove logrotate (not needed for docker) + rm -f "/etc/cron.daily/logrotate" + ;; + + Alpine) + apk-install syslog-ng + ;; +esac + +## Configuration +SYSLOG_NG_VERSION=$(syslog-ng --version | grep -E -e '^Installer-Version:[ ]+[0-9]+\.[0-9]+' | head -n 1 | awk '{print $2}' | cut -f 1,2 -d .) + +# Disable caps inside container +if [[ -f /etc/default/syslog-ng ]]; then + go-replace --mode=lineinfile \ + -s "SYSLOGNG_OPTS" -r "SYSLOGNG_OPTS = --no-caps" \ + -- /etc/default/syslog-ng +fi + +# Symlink configuration +ln -s -f /opt/docker/etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf + +go-replace --mode=lineinfile \ + -s "@version" -r "@version: ${SYSLOG_NG_VERSION}" \ + -- /etc/syslog-ng/syslog-ng.conf + +# Ensure /var/lib/syslog-ng exists +mkdir -p /var/lib/syslog-ng diff --git a/docker/php-official/8.5-alpine/conf/provision/variables-webdevops.yml b/docker/php-official/8.5-alpine/conf/provision/variables-webdevops.yml new file mode 100644 index 000000000..0b2a21a95 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/variables-webdevops.yml @@ -0,0 +1,7 @@ +--- + +docker_image_info_family: "{{ lookup('pipe', 'docker-image-info family') }}" +docker_image_info_distribution: "{{ lookup('pipe', 'docker-image-info dist') }}" +docker_image_info_distribution_version: "{{ lookup('pipe', 'docker-image-info dist-version') }}" +docker_image_info_distribution_release: "{{ lookup('pipe', 'docker-image-info dist-release') }}" +docker_image_info_distribution_codename: "{{ lookup('pipe', 'docker-image-info dist-codename') }}" diff --git a/docker/php-official/8.5-alpine/conf/provision/variables.yml b/docker/php-official/8.5-alpine/conf/provision/variables.yml new file mode 100644 index 000000000..0b2a21a95 --- /dev/null +++ b/docker/php-official/8.5-alpine/conf/provision/variables.yml @@ -0,0 +1,7 @@ +--- + +docker_image_info_family: "{{ lookup('pipe', 'docker-image-info family') }}" +docker_image_info_distribution: "{{ lookup('pipe', 'docker-image-info dist') }}" +docker_image_info_distribution_version: "{{ lookup('pipe', 'docker-image-info dist-version') }}" +docker_image_info_distribution_release: "{{ lookup('pipe', 'docker-image-info dist-release') }}" +docker_image_info_distribution_codename: "{{ lookup('pipe', 'docker-image-info dist-codename') }}" diff --git a/docker/php-official/8.5/Dockerfile b/docker/php-official/8.5/Dockerfile new file mode 100644 index 000000000..97fd3e441 --- /dev/null +++ b/docker/php-official/8.5/Dockerfile @@ -0,0 +1,227 @@ +#+++++++++++++++++++++++++++++++++++++++ +# Dockerfile for webdevops/php-official:8.5 +# -- automatically generated -- +#+++++++++++++++++++++++++++++++++++++++ + + +FROM php:8.5-fpm-bookworm + +LABEL maintainer=info@webdevops.io \ + vendor=WebDevOps.io \ + io.webdevops.layout=8 \ + io.webdevops.version=1.5.0 + +ENV TERM="xterm" \ + LANG="C.UTF-8" \ + LC_ALL="C.UTF-8" +ENV DOCKER_CONF_HOME=/opt/docker/ \ + LOG_STDOUT="" \ + LOG_STDERR="" +ENV APPLICATION_USER=application \ + APPLICATION_GROUP=application \ + APPLICATION_PATH=/app \ + APPLICATION_UID=1000 \ + APPLICATION_GID=1000 +ENV PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" +ENV COMPOSER_VERSION="2" + + +# Baselayout copy (from staged image) +COPY --from=webdevops/toolbox /baselayout/sbin/* /sbin/ +COPY --from=webdevops/toolbox /baselayout/usr/local/bin/* /usr/local/bin/ + + +COPY conf/ /opt/docker/ + +RUN set -x \ + # Init bootstrap + && apt-update \ + && /usr/local/bin/generate-dockerimage-info \ + # Enable non-free + && sed -ri "s/(deb.*\/debian $(docker-image-info dist-codename) main)/\1 contrib non-free /" -- /etc/apt/sources.list.d/debian.sources \ + && apt-update \ + # System update + && /usr/local/bin/apt-upgrade \ + # Base stuff + && apt-install \ + apt-transport-https \ + ca-certificates \ + locales \ + gnupg + +RUN set -x \ + # Install packages + && chmod +x /opt/docker/bin/* \ + && apt-install \ + supervisor \ + wget \ + curl \ + vim \ + net-tools \ + tzdata \ + && chmod +s /sbin/gosu \ + && docker-run-bootstrap \ + && docker-image-cleanup + +RUN set -x \ + # Install services + && apt-install \ + # Install common tools + zip \ + unzip \ + bzip2 \ + moreutils \ + dnsutils \ + openssh-client \ + rsync \ + git \ + patch \ + && /usr/local/bin/generate-locales \ + && docker-run-bootstrap \ + && docker-image-cleanup + +RUN set -x \ + # Install php environment + && apt-install \ + # Install tools + imagemagick \ + graphicsmagick \ + ghostscript \ + jpegoptim \ + libjpeg-turbo-progs \ + pngcrush \ + optipng \ + apngopt \ + pngnq \ + pngquant \ + # Libraries + libvips42 \ + librabbitmq4 \ + libldap-2.5-0 \ + libxslt1.1 \ + libldap-common \ + zlib1g \ + libpq5 \ + libpng16-16 \ + libmcrypt4 \ + libzip4 \ + # Dev and headers + libjpeg62-turbo-dev \ + libwebp-dev \ + libfreetype6-dev \ + libbz2-dev \ + libicu-dev \ + libldap2-dev \ + libldb-dev \ + libmcrypt-dev \ + libxml2-dev \ + libxslt1-dev \ + zlib1g-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libc-client-dev \ + libc-client2007e-dev \ + libkrb5-dev \ + libvips-dev \ + librabbitmq-dev \ + libmagick++-dev \ + libgmp-dev \ + # Install guetzli + && wget https://github.com/google/guetzli/archive/master.zip \ + && unzip master.zip \ + && make -C guetzli-master \ + && cp guetzli-master/bin/Release/guetzli /usr/local/bin/ \ + && rm -rf master.zip guetzli-master \ + # Install new version of ICU + && curl -sS -o /tmp/icu.tar.gz -L https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz \ + && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && make install && cd / && rm -rf /tmp/icu* \ + # Install extensions + && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \ + && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \ + && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ + && cd /usr/src/php/ext/amqp && git submodule update --init \ + && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ + && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ + && docker-php-ext-install \ + bcmath \ + amqp \ + imagick \ + ffi \ + bz2 \ + calendar \ + exif \ + ftp \ + gmp \ + intl \ + gettext \ + ldap \ + mysqli \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + pgsql \ + soap \ + sockets \ + sysvmsg \ + sysvsem \ + sysvshm \ + shmop \ + xsl \ + zip \ + gd \ + gettext \ + opcache \ + && pecl install memcached \ + && pecl install apcu \ + && pecl install excimer \ + && pecl install opentelemetry \ + && pecl install protobuf \ + && pecl install xmlrpc-1.0.0RC3 \ + && pecl install vips \ + && pecl install redis \ + && pecl install mongodb \ + && echo extension=apcu.so > /usr/local/etc/php/conf.d/apcu.ini \ + && echo extension=excimer.so > /usr/local/etc/php/conf.d/excimer.ini \ + && echo extension=opentelemetry.so > /usr/local/etc/php/conf.d/opentelemetry.ini \ + && echo extension=protobuf.so > /usr/local/etc/php/conf.d/protobuf.ini \ + && echo extension=redis.so > /usr/local/etc/php/conf.d/redis.ini \ + && echo extension=mongodb.so > /usr/local/etc/php/conf.d/mongodb.ini \ + && echo extension=memcached.so > /usr/local/etc/php/conf.d/memcached.ini \ + && echo extension=vips.so > /usr/local/etc/php/conf.d/vips.ini \ + && echo extension=xmlrpc.so > /usr/local/etc/php/conf.d/xmlrpc.ini \ + # Uninstall dev and header packages + && apt-get purge -y -f --force-yes \ + libc-client-dev \ + libkrb5-dev \ + libbz2-dev \ + libicu-dev \ + libldap2-dev \ + libldb-dev \ + libmcrypt-dev \ + libxml2-dev \ + libxslt1-dev \ + zlib1g-dev \ + libpng-dev \ + libwebp-dev \ + libpq-dev \ + libzip-dev \ + libvips-dev \ + librabbitmq-dev \ + libmagick++-dev \ + libgmp-dev \ + && rm -f /usr/local/etc/php-fpm.d/zz-docker.conf \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer2 \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer1 --1 \ + && ln -sf /usr/local/bin/composer2 /usr/local/bin/composer \ + # Enable php services + && docker-service enable syslog \ + && docker-service enable cron \ + && docker-run-bootstrap \ + && docker-image-cleanup + +WORKDIR / +EXPOSE 9000 +ENTRYPOINT ["/entrypoint"] +CMD ["supervisord"] diff --git a/docker/php-official/8.5/Dockerfile.jinja2 b/docker/php-official/8.5/Dockerfile.jinja2 new file mode 100644 index 000000000..549d2056d --- /dev/null +++ b/docker/php-official/8.5/Dockerfile.jinja2 @@ -0,0 +1,37 @@ + +{{ docker.fromOfficial("php", "8.5-fpm-bookworm") }} + +{{ docker.version() }} + +{{ environment.general() }} +{{ environment.base() }} +{{ environment.baseApp() }} +{{ environment.phpOfficialSendmailWorkaround() }} +{{ environment.phpComposerVersion() }} + +{{ baselayout.copy() }} + +{{ docker.copy('conf/', '/opt/docker/') }} + +RUN set -x \ + {{ bootstrap.debian('bookworm') }} + +RUN set -x \ + {{ base.debian() }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} + +RUN set -x \ + {{ baseapp.debian() }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} + +RUN set -x \ + {{ php.official(version='8.5',distribution='bookworm') }} \ + {{ provision.runBootstrap() }} \ + {{ docker.cleanup() }} + +{{ docker.workdir('/') }} +{{ docker.expose('9000') }} +{{ docker.entrypoint("/entrypoint") }} +{{ docker.cmd("supervisord") }} diff --git a/docker/php-official/8.5/conf/VERSION b/docker/php-official/8.5/conf/VERSION new file mode 100644 index 000000000..301160a93 --- /dev/null +++ b/docker/php-official/8.5/conf/VERSION @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/docker/php-official/8.5/conf/bin/bootstrap.sh b/docker/php-official/8.5/conf/bin/bootstrap.sh new file mode 100644 index 000000000..b1b3acdbc --- /dev/null +++ b/docker/php-official/8.5/conf/bin/bootstrap.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec docker-run-bootstrap diff --git a/docker/php-official/8.5/conf/bin/config.sh b/docker/php-official/8.5/conf/bin/config.sh new file mode 100644 index 000000000..46265a3c0 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/config.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +shopt -s nullglob + +### + # Check if current user is root + # + ## +function rootCheck() { + # Root check + if [ "$(/usr/bin/whoami)" != "root" ]; then + echo "[ERROR] $* must be run as root" + exit 1 + fi +} + +### + # Create /docker.stdout and /docker.stderr + # + ## +function createDockerStdoutStderr() { + # link stdout from docker + if [[ -n "$LOG_STDOUT" ]]; then + echo "Log stdout redirected to $LOG_STDOUT" + else + LOG_STDOUT="/proc/$$/fd/1" + fi + + if [[ -n "$LOG_STDERR" ]]; then + echo "Log stderr redirected to $LOG_STDERR" + else + LOG_STDERR="/proc/$$/fd/2" + fi + + ln -f -s "$LOG_STDOUT" /docker.stdout + ln -f -s "$LOG_STDERR" /docker.stderr +} +### + # Include script directory text inside a file + # + # $1 -> path + # + ## +function includeScriptDir() { + if [[ -d "$1" ]]; then + for FILE in "$1"/*.sh; do + echo "-> Executing ${FILE}" + # run custom scripts, only once + . "$FILE" + done + fi +} + +### + # Show deprecation notice + # + ## +function deprecationNotice() { + echo "" + echo "###############################################################################" + echo "### THIS CALL IS DEPRECATED AND WILL BE REMOVED IN THE FUTURE" + echo "###" + echo "### $*" + echo "###" + echo "###############################################################################" + echo "" +} + +### + # Run "entrypoint" scripts + ## +function runEntrypoints() { + ############### + # Try to find entrypoint + ############### + + ENTRYPOINT_SCRIPT="/opt/docker/bin/entrypoint.d/${TASK}.sh" + + if [ -f "$ENTRYPOINT_SCRIPT" ]; then + . "$ENTRYPOINT_SCRIPT" + fi + + ############### + # Run default + ############### + if [ -f "/opt/docker/bin/entrypoint.d/default.sh" ]; then + . /opt/docker/bin/entrypoint.d/default.sh + fi + + exit 1 +} + + # Run "entrypoint" provisioning + ## +function runProvisionEntrypoint() { + includeScriptDir "/opt/docker/provision/entrypoint.d" + includeScriptDir "/entrypoint.d" +} + +### + # List environment variables (based on prefix) + ## +function envListVars() { + if [[ $# -eq 1 ]]; then + env | grep "^${1}" | cut -d= -f1 + else + env | cut -d= -f1 + fi +} + +### + # Get environment variable (even with dots in name) + # + ## +function envGetValue() { + awk "BEGIN {print ENVIRON[\"$1\"]}" +} diff --git a/docker/php-official/8.5/conf/bin/control.sh b/docker/php-official/8.5/conf/bin/control.sh new file mode 100644 index 000000000..22d189745 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/control.sh @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +source /opt/docker/bin/config.sh + +rootCheck "$0" + +CONTROL_COMMAND="$1" +shift + +case "$CONTROL_COMMAND" in + + ## ------------------------------------------ + ## PROVISION + ## ------------------------------------------ + + ## main roles + "provision.role") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint "$1" + ;; + + "provision.role.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap "$1" + ;; + + "provision.role.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build "$1" + ;; + + "provision.role.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild "$1" + ;; + + "provision.role.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint "$1" + ;; + + ## startup roles + "provision.role.startup") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint --priority 50 "$1" + ;; + + "provision.role.startup.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --priority 50 "$1" + ;; + + "provision.role.startup.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build --priority 50 "$1" + ;; + + "provision.role.startup.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild --priority 50 "$1" + ;; + + "provision.role.startup.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint --priority 50 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint --priority 50 "$1" + ;; + + ## finish roles + "provision.role.finish") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --tag build --tag onbuild --tag entrypoint --priority 200 "$1" + ;; + + "provision.role.finish.bootstrap") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag bootstrap --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag bootstrap --priority 200 "$1" + ;; + + "provision.role.finish.build") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag build --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag build --priority 200 "$1" + ;; + + "provision.role.finish.onbuild") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag onbuild --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag onbuild --priority 200 "$1" + ;; + + "provision.role.finish.entrypoint") + deprecationNotice " Please use >>/opt/docker/bin/provision add --tag entrypoint --priority 200 [role]<< for adding provision roles" + /opt/docker/bin/provision add --tag entrypoint --priority 200 "$1" + ;; + + ## ------------------------------------------ + ## Service + ## ------------------------------------------ + + "service.enable") + deprecationNotice " Please use >>docker-service-enable [service]<<" + docker-service-enable "$1" + ;; + + "service.disable") + deprecationNotice " Please use >>docker-service-disable [service]<<" + docker-service-disable "$1" + ;; + + ## ------------------------------------------ + ## Version + ## ------------------------------------------ + + "version.get") + cat /opt/docker/VERSION + ;; + + "version.require.min") + EXPECTED_VERSION="$1" + CURRENT_VERSION="$(cat /opt/docker/VERSION)" + if [ "$CURRENT_VERSION" -lt "$EXPECTED_VERSION" ]; then + echo "-----------------------------------------------------------" + echo "--- This docker image is not up2date!" + echo "--- " + echo "--- Version expected min: $EXPECTED_VERSION" + echo "--- Version current: $CURRENT_VERSION" + echo "--- " + echo "--- Run 'docker pull ' to update image" + echo "-----------------------------------------------------------" + exit 1 + fi + ;; + + "version.require.max") + EXPECTED_VERSION="$1" + CURRENT_VERSION="$(cat /opt/docker/VERSION)" + if [ "$CURRENT_VERSION" -gt "$EXPECTED_VERSION" ]; then + echo "-----------------------------------------------------------" + echo "--- This docker image is too new!" + echo "--- " + echo "--- Version expected max: $EXPECTED_VERSION" + echo "--- Version current: $CURRENT_VERSION" + echo "-----------------------------------------------------------" + exit 1 + fi + ;; + + + "buildtime.get") + cat /opt/docker/BUILDTIME + ;; + + *) + echo "[ERROR] Invalid controll command: \"${CONTROL_COMMAND}\"" + exit 1 + ;; +esac diff --git a/docker/php-official/8.5/conf/bin/entrypoint.d/cli.sh b/docker/php-official/8.5/conf/bin/entrypoint.d/cli.sh new file mode 100644 index 000000000..fe212a8ea --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.d/cli.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +############################################# +## Run CLI_SCRIPT from environment variable +############################################# + +if [ -n "${CLI_SCRIPT}" ]; then + if [ -n "$APPLICATION_USER" ]; then + # Run as EFFECTIVE_USER + shift + exec gosu "${APPLICATION_USER}" ${CLI_SCRIPT} "$@" + else + # Run as root + exec ${CLI_SCRIPT} "$@" + fi +else + echo "[ERROR] No CLI_SCRIPT in in docker environment defined" + exit 1 +fi diff --git a/docker/php-official/8.5/conf/bin/entrypoint.d/default.sh b/docker/php-official/8.5/conf/bin/entrypoint.d/default.sh new file mode 100644 index 000000000..a1be715fe --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.d/default.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec "$@" diff --git a/docker/php-official/8.5/conf/bin/entrypoint.d/noop.sh b/docker/php-official/8.5/conf/bin/entrypoint.d/noop.sh new file mode 100644 index 000000000..092d55d8b --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.d/noop.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +############################################# +## NOOP (no operation) +############################################# + +exec tail -f /dev/null diff --git a/docker/php-official/8.5/conf/bin/entrypoint.d/root.sh b/docker/php-official/8.5/conf/bin/entrypoint.d/root.sh new file mode 100644 index 000000000..6fa0d063e --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.d/root.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +############################################# +## Root shell +############################################# + +if [ "$#" -eq 1 ]; then + ## No command, fall back to interactive shell + exec bash +else + ## Exec root command + shift + exec "$@" +fi diff --git a/docker/php-official/8.5/conf/bin/entrypoint.d/supervisord.sh b/docker/php-official/8.5/conf/bin/entrypoint.d/supervisord.sh new file mode 100644 index 000000000..f21489667 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.d/supervisord.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +############################################# +## Supervisord (start daemons) +############################################# + +## Start services +exec /opt/docker/bin/service.d/supervisor.sh + diff --git a/docker/php-official/8.5/conf/bin/entrypoint.sh b/docker/php-official/8.5/conf/bin/entrypoint.sh new file mode 100644 index 000000000..0489b796c --- /dev/null +++ b/docker/php-official/8.5/conf/bin/entrypoint.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +if [[ -z "$CONTAINER_UID" ]]; then + export CONTAINER_UID="application" +fi + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# auto elevate privileges (if container is not started as root) +if [[ "$UID" -ne 0 ]]; then + export CONTAINER_UID="$UID" + exec gosu root "$0" "$@" +fi +# remove suid bit on gosu +chmod -s /sbin/gosu + +trap 'echo sigterm ; exit' SIGTERM +trap 'echo sigkill ; exit' SIGKILL + +# sanitize input and set task +TASK="$(echo $1| sed 's/[^-_a-zA-Z0-9]*//g')" + +source /opt/docker/bin/config.sh + +createDockerStdoutStderr + +if [[ "$UID" -eq 0 ]]; then + # Only run provision if user is root + + if [ "$TASK" == "supervisord" -o "$TASK" == "noop" ]; then + # Visible provisioning + runProvisionEntrypoint + else + # Hidden provisioning + runProvisionEntrypoint > /dev/null + fi +fi + +############################# +## COMMAND +############################# + +runEntrypoints "$@" diff --git a/docker/php-official/8.5/conf/bin/provision b/docker/php-official/8.5/conf/bin/provision new file mode 100755 index 000000000..418e81dd8 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/provision @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# Install ansible if not installed +if [ -z "`which ansible-playbook`" ]; then + docker-ansible-install +fi + +exec /opt/docker/bin/provision.py "$@" diff --git a/docker/php-official/8.5/conf/bin/provision.py b/docker/php-official/8.5/conf/bin/provision.py new file mode 100755 index 000000000..d367c2812 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/provision.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python + +import os +import argparse +import json +import sys +from string import Template +from subprocess import call +import tempfile +import time + +STORAGE = '/opt/docker/etc/.registry/provision.json' +PROVISION_DIR = '/opt/docker/provision/' + +PLAYBOOK_TAGS=['bootstrap', 'build', 'onbuild', 'entrypoint'] + +PLAYBOOK = Template( +"""--- + +- hosts: all + vars_files: + - ./variables-webdevops.yml + - ./variables.yml + roles: + - $roles +""") + + + +def readJson(): + ret = {} + + # create registry directory if it doesn't exists + if not os.path.exists(os.path.dirname(STORAGE)): + os.mkdir(os.path.dirname(STORAGE)) + + # try to read file + if os.path.isfile(STORAGE): + f=open(STORAGE).read() + ret = json.loads(f) + + return ret + + + +def saveJson(data): + with open(STORAGE, 'w') as f: + json.dump(data, f) + + + +def buildRoleList(tags): + json = readJson() + roleList = {} + + # fetch roles list for each tag + for tag in tags: + if tag in json: + for role in json[tag]: + roleRow = json[tag][role] + if role not in roleList: + roleList[role] = {} + + if 'tags' not in roleList[role]: + roleList[role]['tags'] = {} + + roleList[role]['role'] = role + roleList[role]['added'] = roleRow['added'] + roleList[role]['priority'] = roleRow['priority'] + roleList[role]['tags'][tag] = tag + + return roleList + + +def buildSortedRoleList(tags): + roleList = buildRoleList(tags) + + # sort list + roleList = sorted(roleList, key=lambda x: (roleList[x]['priority'], roleList[x]['added'])) + + return roleList + + + +def buildPlaybook(roleList): + ## build playbook + ret = PLAYBOOK.substitute( + roles = "\n - ".join(roleList) + ) + + return ret + + +def buildPlaybookFromArgs(args): + roleList = [] + + ## add roles from tag (if use registry is active) + if args.useRegistry and args.tags: + roleList.extend(buildSortedRoleList(args.tags)) + + ## add roles from command arguments + if args.roles: + for role in args.roles: + roleList.extend(role.split(',')) + + if roleList: + return buildPlaybook(roleList) + else: + return False + + + +def actionRun(args): + if args.playbook: + ## predefined playbook + playbook = args.playbook + else: + ## dynamic playbook + playbookContent = buildPlaybookFromArgs(args) + + if playbookContent: + f = tempfile.NamedTemporaryFile(dir=PROVISION_DIR, prefix='playbook.', suffix='.yml', delete=False) + f.write(playbookContent) + f.close() + playbook = f.name + else: + ## nothing to do + sys.exit(0) + + ## build ansible command with args + cmd = [ + 'ansible-playbook', + playbook, + '-i', 'localhost,', + '--connection=local', + ] + + if args.tags: + cmd.extend([ + '--tags=' + ','.join(args.tags) + ]) + + if args.args: + cmd.extend(args.args) + + ## run ansible + retval = call(cmd) + + ## cleanup dynamic playbook + if not args.playbook: + os.unlink(playbook) + + sys.exit(retval) + + + +def actionPlaybook(args): + playbook = buildPlaybookFromArgs(args) + + if playbook: + print playbook + else: + sys.exit(1) + + + +def actionList(args): + json = readJson() + list = {} + + for tag in args.tags: + if tag in json: + for role in json[tag]: + print role + + + +def actionAdd(args): + json = readJson() + + for tag in args.tags: + for role in args.role: + if tag not in json: + json[tag] = {} + + json[tag][role] = { + 'name': role, + 'added': int(time.time()), + 'priority': args.priority + } + + saveJson(json) + + + +def actionSummary(args): + # list all roles in each possible tag + for tag in PLAYBOOK_TAGS: + roleList = buildRoleList([tag]) + if roleList: + maxLength = len(max(roleList.keys(), key=len)) + + print "Roles in " + tag + ":" + for role in roleList: + print ' - ' + role.ljust(maxLength, ' ') + ' [priority: ' + str(roleList[role]['priority']) + ']' + print '' + + + +def main(args): + actions = { + 'list': actionList, + 'add': actionAdd, + 'summary': actionSummary, + 'playbook': actionPlaybook, + 'run': actionRun + } + + func = actions.get(args.action, lambda: "nothing") + return func(args) + + + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers( + title='subcommands', + dest='action' + ) + + ################################### + ## SUMMARY command + summary = subparsers.add_parser('summary') + + ################################### + ## RUN command + run = subparsers.add_parser('run') + run.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + run.add_argument( + '--playbook', + dest='playbook', + help='Ansible playbook' + ) + run.add_argument( + '--use-registry', + dest='useRegistry', + action='store_true', + help='Use registred roles' + ) + run.add_argument( + '--role', + dest='roles', + action='append', + help='Ansible role' + ) + run.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## PLAYBOOK command + playbook = subparsers.add_parser('playbook') + playbook.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + playbook.add_argument( + '--use-registry', + dest='useRegistry', + action='store_true', + help='Use registred roles' + ) + playbook.add_argument( + '--role', + dest='roles', + action='append', + help='Ansible tag' + ) + playbook.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## LIST command + list = subparsers.add_parser('list') + list.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + list.add_argument('args', nargs=argparse.REMAINDER) + + ################################### + ## ADD command + add = subparsers.add_parser('add') + add.add_argument( + '--tag', + dest='tags', + choices=PLAYBOOK_TAGS, + required=True, + action='append', + help='Ansible tag' + ) + add.add_argument( + '--priority', + type=int, + default=100, + dest='priority', + help='Priority for role [default 100, 1 is most important]' + ) + add.add_argument('role', metavar='roles', nargs='+', help='Ansible roles') + + add.add_argument('args', nargs=argparse.REMAINDER) + + ## Execute + args = parser.parse_args() + main(args) diff --git a/docker/php-official/8.5/conf/bin/service.d/cron.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/cron.d/10-init.sh new file mode 100644 index 000000000..611edc9bf --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/cron.d/10-init.sh @@ -0,0 +1,16 @@ +# Install crontab files + +if [[ -d "/opt/docker/etc/cron" ]]; then + mkdir -p /etc/cron.d/ + + find /opt/docker/etc/cron -type f | while read CRONTAB_FILE; do + # fix permissions + chmod 0644 -- "$CRONTAB_FILE" + + # add newline, cron needs this + echo >> "$CRONTAB_FILE" + + # Install files + cp -a -- "$CRONTAB_FILE" "/etc/cron.d/$(basename "$CRONTAB_FILE")" + done +fi diff --git a/docker/php-official/8.5/conf/bin/service.d/cron.sh b/docker/php-official/8.5/conf/bin/service.d/cron.sh new file mode 100644 index 000000000..b5fa80dd3 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/cron.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_CRON_OPTS" ]]; then SERVICE_CRON_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/cron.d/" + +exec /usr/sbin/cron -f $SERVICE_CRON_OPTS diff --git a/docker/php-official/8.5/conf/bin/service.d/dnsmasq.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/dnsmasq.d/10-init.sh new file mode 100644 index 000000000..836ebe2b5 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/dnsmasq.d/10-init.sh @@ -0,0 +1,37 @@ +# Create dnsmasq.d directory if not exists +mkdir -p -- /etc/dnsmasq.d/ + +# Enable /etc/dnsmasq.d/ +go-replace --mode=lineinfile --once \ + -s 'conf-dir' -r 'conf-dir=/etc/dnsmasq.d/,*.conf' \ + -- /etc/dnsmasq.conf + +## clear dns file +echo > /etc/dnsmasq.d/webdevops.conf + +if [ ! -f /etc/resolv.conf.original ]; then + cp -a /etc/resolv.conf /etc/resolv.conf.original + + ## set forward servers + cat /etc/resolv.conf.original | grep nameserver | sed 's/nameserver /server=/' > /etc/dnsmasq.d/forward.conf + + ## set dnsmasq to main nameserver + echo "nameserver 127.0.0.1" > /etc/resolv.conf +fi + + +# Add own VIRTUAL_HOST as loopback +if [[ -n "${VIRTUAL_HOST+x}" ]]; then + # split comma by space + VIRTUAL_HOST_LIST=${VIRTUAL_HOST//,/$'\n'} + + # replace *.domain for dns specific .domain wildcard + VIRTUAL_HOST_LIST=${VIRTUAL_HOST_LIST/\*./.} + + # no support for .* + VIRTUAL_HOST_LIST=${VIRTUAL_HOST_LIST/.\*/.} + + for DOMAIN in $VIRTUAL_HOST_LIST; do + echo "address=/${DOMAIN}/127.0.0.1" >> /etc/dnsmasq.d/webdevops.conf + done +fi diff --git a/docker/php-official/8.5/conf/bin/service.d/dnsmasq.sh b/docker/php-official/8.5/conf/bin/service.d/dnsmasq.sh new file mode 100644 index 000000000..b8b4c12e0 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/dnsmasq.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_DNSMASQ_OPTS" ]]; then SERVICE_DNSMASQ_OPTS=""; fi +if [[ -z "$SERVICE_DNSMASQ_USER" ]]; then SERVICE_DNSMASQ_USER="root"; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/dnsmasq.d/" + +exec dnsmasq --keep-in-foreground --user="$SERVICE_DNSMASQ_USER" $SERVICE_DNSMASQ_OPTS diff --git a/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/10-init.sh new file mode 100644 index 000000000..7d0dadad6 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/10-init.sh @@ -0,0 +1,12 @@ +# setup user env +FPM_POOL_CONF="/opt/docker/etc/php/fpm/pool.d/application.conf" + +## Setup container uid +if [[ -n "$CONTAINER_UID" ]]; then + echo "Setting php-fpm user to $CONTAINER_UID" + go-replace --mode=line --regex \ + -s '^[\s;]*user[\s]*=' -r "user = $CONTAINER_UID" \ + -s '^[\s;]*group[\s]*=' -r "group = $CONTAINER_UID" \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' +fi diff --git a/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/11-clear-env.sh b/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/11-clear-env.sh new file mode 100644 index 000000000..ef6fd4016 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/php-fpm.d/11-clear-env.sh @@ -0,0 +1,38 @@ +# +# Workaround for old php-fpm versions which don't have clear_env setting +# + +VARIABLE_LIST="; Workaround for missing clear_env feature in PHP-FPM" + +# For each exported variable +for envVariable in $(printenv|cut -f1 -d=); do + + case "$envVariable" in + "_"|"PATH"|"PWD") + ## ignore this variables + ;; + + *) + ## get content of variable + envVariableContent="${!envVariable}" + + ## php-fpm requires that env variable has to be filled with content + if [[ -n "$envVariableContent" ]]; then + ## quote quotes + envVariableContent=${envVariableContent//\"/\\\"} + + ## add to list + VARIABLE_LIST="${VARIABLE_LIST}"$'\n'"env[${envVariable}] = \"${envVariableContent}\"" + fi + ;; + esac + +done + +# Replace ;#CLEAR_ENV_WORKAROUND# with environment variable list for all php-fpm pool files +go-replace \ + -s ";#CLEAR_ENV_WORKAROUND#" -r "$VARIABLE_LIST" \ + --path=/opt/docker/etc/php/fpm/pool.d/ \ + --path-pattern='*.conf' \ + --ignore-empty + diff --git a/docker/php-official/8.5/conf/bin/service.d/php-fpm.sh b/docker/php-official/8.5/conf/bin/service.d/php-fpm.sh new file mode 100644 index 000000000..15374f566 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/php-fpm.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_PHPFPM_OPTS" ]]; then SERVICE_PHPFPM_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/php-fpm.d/" + +exec /usr/local/bin/php-fpm --nodaemonize $SERVICE_PHPFPM_OPTS diff --git a/docker/php-official/8.5/conf/bin/service.d/postfix.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/postfix.d/10-init.sh new file mode 100644 index 000000000..82574153d --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/postfix.d/10-init.sh @@ -0,0 +1,30 @@ +# force new copy of hosts there (otherwise links could be outdated) +mkdir -p /var/spool/postfix/etc +cp -f /etc/hosts /var/spool/postfix/etc/hosts +cp -f /etc/resolv.conf /var/spool/postfix/etc/resolv.conf +cp -f /etc/services /var/spool/postfix/etc/services + +go-replace --mode=line --regex -s '^[\s]*myhostname[\s]*=.*' -r "myhostname = $HOSTNAME" + +# General +go-replace --mode=lineinfile --regex \ + -s '^[\s]*myhostname[\s]*=.*.*' -r "myhostname = $HOSTNAME" \ + -s '^[\s]*inet_interfaces[\s]*=.*' -r "inet_interfaces = 127.0.0.1" \ + -- /etc/postfix/main.cf + +## REPLAYHOST +if [[ -n "${POSTFIX_RELAYHOST+x}" ]]; then + go-replace --mode=lineinfile --regex \ + -s '^[\s]*relayhost[\s]*=.*' -r "relayhost = $POSTFIX_RELAYHOST" \ + -- /etc/postfix/main.cf +fi + +## MYNETWORKS +if [[ -n "${POSTFIX_MYNETWORKS+x}" ]]; then + go-replace --mode=lineinfile --regex \ + -s '^[\s]*mynetworks[\s]*=.*' -r "mynetworks = $POSTFIX_MYNETWORKS" \ + -- /etc/postfix/main.cf +fi + +# generate aliases db +newaliases || : diff --git a/docker/php-official/8.5/conf/bin/service.d/postfix.sh b/docker/php-official/8.5/conf/bin/service.d/postfix.sh new file mode 100644 index 000000000..b9e477bcd --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/postfix.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# postfix-wrapper.sh, version 0.1.0 +# +# You cannot start postfix in some foreground mode and +# it's more or less important that docker doesn't kill +# postfix and its chilren if you stop the container. +# +# Use this script with supervisord and it will take +# care about starting and stopping postfix correctly. +# +# supervisord config snippet for postfix-wrapper: +# +# [program:postfix] +# process_name = postfix +# command = /path/to/postfix-wrapper.sh +# startsecs = 0 +# autorestart = false +# + +# Init vars +if [[ -z "$SERVICE_POSTFIX_OPTS" ]]; then SERVICE_POSTFIX_OPTS=""; fi + +source /opt/docker/bin/config.sh + +trap "postfix stop" SIGINT +trap "postfix stop" SIGTERM +trap "postfix reload" SIGHUP + +includeScriptDir "/opt/docker/bin/service.d/postfix.d/" + +# start postfix +postfix start $SERVICE_POSTFIX_OPTS + +# lets give postfix some time to start +sleep 3 + +# wait until postfix is dead (triggered by trap) +if [[ -f /var/spool/postfix/pid/master.pid ]]; then + while kill -0 "$(cat /var/spool/postfix/pid/master.pid 2>/dev/null)" &>/dev/null; do + sleep 5 + done +fi diff --git a/docker/php-official/8.5/conf/bin/service.d/ssh.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/ssh.d/10-init.sh new file mode 100644 index 000000000..f2b600312 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/ssh.d/10-init.sh @@ -0,0 +1,7 @@ +# Init ssh privilege separation directory +mkdir -p /var/run/sshd +chown root:root /var/run/sshd +chmod 755 /var/run/sshd + +# generate host keys +ssh-keygen -A diff --git a/docker/php-official/8.5/conf/bin/service.d/ssh.sh b/docker/php-official/8.5/conf/bin/service.d/ssh.sh new file mode 100644 index 000000000..f01e87ab3 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/ssh.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SSH_OPTS" ]]; then SERVICE_SSH_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/ssh.d/" + +exec /usr/sbin/sshd -D $SERVICE_SSH_OPTS diff --git a/docker/php-official/8.5/conf/bin/service.d/supervisor.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/supervisor.d/10-init.sh new file mode 100644 index 000000000..fdffa2a0f --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/supervisor.d/10-init.sh @@ -0,0 +1 @@ +# placeholder diff --git a/docker/php-official/8.5/conf/bin/service.d/supervisor.sh b/docker/php-official/8.5/conf/bin/service.d/supervisor.sh new file mode 100644 index 000000000..5a82a13ff --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/supervisor.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SUPERVISOR_OPTS" ]]; then SERVICE_SUPERVISOR_OPTS=""; fi +if [[ -z "$SERVICE_SUPERVISOR_USER" ]]; then SERVICE_SUPERVISOR_USER="root"; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/supervisor.d/" + +exec supervisord -c /opt/docker/etc/supervisor.conf --logfile /dev/null --pidfile /dev/null --user "$SERVICE_SUPERVISOR_USER" $SERVICE_SUPERVISOR_OPTS diff --git a/docker/php-official/8.5/conf/bin/service.d/syslog-ng.d/10-init.sh b/docker/php-official/8.5/conf/bin/service.d/syslog-ng.d/10-init.sh new file mode 100644 index 000000000..326207e52 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/syslog-ng.d/10-init.sh @@ -0,0 +1,10 @@ +# If /dev/log is either a named pipe or it was placed there accidentally, +# e.g. because of the issue documented at https://github.com/phusion/baseimage-docker/pull/25, +# then we remove it. +if [ ! -S /dev/log ]; then rm -f /dev/log; fi +if [ ! -S /var/lib/syslog-ng/syslog-ng.ctl ]; then rm -f /var/lib/syslog-ng/syslog-ng.ctl; fi + +if [[ ! -p /docker.stdout ]]; then + # Switch to file (tty docker mode) + go-replace -s 'pipe("/docker.stdout")' -r 'file("/docker.stdout")' -- /opt/docker/etc/syslog-ng/syslog-ng.conf +fi diff --git a/docker/php-official/8.5/conf/bin/service.d/syslog-ng.sh b/docker/php-official/8.5/conf/bin/service.d/syslog-ng.sh new file mode 100644 index 000000000..8e1358c1b --- /dev/null +++ b/docker/php-official/8.5/conf/bin/service.d/syslog-ng.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Init vars +if [[ -z "$SERVICE_SYSLOG_OPTS" ]]; then SERVICE_SYSLOG_OPTS=""; fi + +source /opt/docker/bin/config.sh + +includeScriptDir "/opt/docker/bin/service.d/syslog-ng.d/" + +exec syslog-ng -F --no-caps -p /var/run/syslog-ng.pid $SYSLOGNG_OPTS $SERVICE_SYSLOG_OPTS diff --git a/docker/php-official/8.5/conf/bin/usr-bin/container-file-auto-restore b/docker/php-official/8.5/conf/bin/usr-bin/container-file-auto-restore new file mode 100644 index 000000000..a41fcb3c8 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/container-file-auto-restore @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o pipefail ## trace ERR through pipes +set -o errtrace ## trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +if [[ "$#" -ne 1 ]]; then + echo "Usage: $0 " + exit 1 +fi + +SOURCE_FILE="$1" +BACKUP_FILE="$(dirname "$1")/.$(basename "$1").bak" + +if [[ -f "$BACKUP_FILE" ]]; then + ## Backup file exists + ## -> container was restarted + ## -> restoring configuration + cp -a -- "$BACKUP_FILE" "$SOURCE_FILE" +else + ## Backup file DOESN'T exists + ## -> container first startup + ## -> backup configuration + cp -a -- "$SOURCE_FILE" "$BACKUP_FILE" +fi diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-ansible-install b/docker/php-official/8.5/conf/bin/usr-bin/docker-ansible-install new file mode 100644 index 000000000..dfb06fc7d --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-ansible-install @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install \ + python-minimal \ + python-setuptools \ + python-pip \ + python-paramiko \ + python-jinja2 \ + python-dev \ + libffi-dev \ + libssl-dev \ + build-essential + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + apt-get purge -y -f --force-yes \ + python-dev \ + build-essential \ + libssl-dev \ + libffi-dev + + chmod 750 /usr/local/bin/ansible* + ;; + + RedHat) + yum-install \ + epel-release \ + PyYAML \ + python-jinja2 \ + python-httplib2 \ + python-keyczar \ + python-paramiko \ + python-setuptools \ + python-setuptools-devel \ + libffi \ + python-devel \ + libffi-devel + easy_install pip + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + yum erase -y python-devel + + chmod 750 /usr/bin/ansible* + ;; + + Alpine) + apk-install \ + python \ + python-dev \ + py-setuptools \ + py-crypto \ + py2-pip \ + py-cparser \ + py-cryptography \ + py-markupsafe \ + py-cffi \ + py-yaml \ + py-jinja2 \ + py-paramiko + pip install --upgrade pip + hash -r + pip install --no-cache-dir ansible + # Cleanup + apk del python-dev + + chmod 750 /usr/bin/ansible* + ;; +esac +docker-image-cleanup diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-cronjob b/docker/php-official/8.5/conf/bin/usr-bin/docker-cronjob new file mode 100644 index 000000000..2746c75f5 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-cronjob @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +source /opt/docker/bin/config.sh + +rootCheck "$0" + +if [[ "$#" -eq 0 ]]; then + echo "Usage: $0 ''" + exit 1 +fi + +# create crontab file +touch /etc/cron.d/webdevops-docker +chmod 0644 /etc/cron.d/webdevops-docker + +for CRONJOB_LINES in "$@"; do + echo "$CRONJOB_LINES" >> /etc/cron.d/webdevops-docker +done + +# Add required newline at end +echo >> /etc/cron.d/webdevops-docker diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-php-setting b/docker/php-official/8.5/conf/bin/usr-bin/docker-php-setting new file mode 100644 index 000000000..30bbb979f --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-php-setting @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# Defaults +PHP_INI_FILE="/opt/docker/etc/php/php.ini" +PHP_VALUE_RAW=0 +PHP_KEY= +PHP_VALUE= + +for arg in "$@"; do + case "$arg" in + --raw) + PHP_VALUE_RAW=1 + shift + ;; + esac +done + +if [[ "$#" -le 2 ]]; then + echo "Usage: $(basename "$0") [--raw] " + exit 1 +fi + +PHP_SETTING_KEY=$1 +shift +PHP_SETTING_VALUE="$@" + +if [[ "$PHP_VALUE_RAW" -eq 0 ]]; then + case "$PHP_SETTING_VALUE" in + ''|*[!0-9]*) + # non numeric + PHP_SETTING_VALUE="\"${PHP_SETTING_VALUE}\"" + ;; + esac +fi + + +echo "$(basename "$0"): Setting php setting: ${PHP_SETTING_KEY} = ${PHP_SETTING_VALUE}" +echo "${PHP_SETTING_KEY} = ${PHP_SETTING_VALUE}" >> "$PHP_INI_FILE" + diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-provision b/docker/php-official/8.5/conf/bin/usr-bin/docker-provision new file mode 100644 index 000000000..4ee715c64 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-provision @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# wrapper +exec /opt/docker/bin/provision "$@" diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-service b/docker/php-official/8.5/conf/bin/usr-bin/docker-service new file mode 100644 index 000000000..70a493767 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-service @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +if [[ "$#" -le 1 ]]; then + echo "Usage: $0 " + exit 1 +fi + +SERVICE_COMMAND=$1 +shift + +for SERVICE in "$@"; do + RUN_FILE="/opt/docker/bin/service.d/${SERVICE}.sh" + SERVICE_FILE="/opt/docker/etc/supervisor.d/${SERVICE}.conf" + PROVISION_FILE="/opt/docker/provision/service.d/${SERVICE}.sh" + + case "$SERVICE_COMMAND" in + enable) + # Run on demand installation/provisioning + if [[ -f "$PROVISION_FILE" ]]; then + echo "Running provisioning for ${SERVICE}, please wait..." + + ## execute scripts + . "$PROVISION_FILE" + + ## remove directory (one run time) + rm -f -- "$PROVISION_FILE" + fi + + ## Enable service + if [[ -f "$SERVICE_FILE" ]]; then + go-replace --mode=lineinfile \ + -s 'autostart =' -r 'autostart = true' \ + -- "$SERVICE_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})" + exit 1 + fi + ;; + + disable) + ## Disable service + if [[ -f "$SERVICE_FILE" ]]; then + go-replace --mode=lineinfile \ + -s 'autostart =' -r 'autostart = false' \ + -- "$SERVICE_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${SERVICE_FILE})" + exit 1 + fi + ;; + + install) + # Run on demand installation/provisioning + if [[ -f "$PROVISION_FILE" ]]; then + echo "Running provisioning for ${SERVICE}, please wait..." + + ## execute scripts + . "$PROVISION_FILE" + + ## remove directory (one run time) + rm -f -- "$PROVISION_FILE" + fi + ;; + + run) + if [[ -f "$RUN_FILE" ]]; then + exec "$RUN_FILE" + else + echo "[ERROR] Service '${SERVICE}' not found (tried ${RUN_FILE})" + exit 1 + fi + ;; + + stop|start|restart|status|pid|check) + service "${SERVICE}" "$SERVICE_COMMAND" + ;; + + *) + echo "[ERROR] $SERVICE_COMMAND is not a valid command" + exit 1 + ;; + esac +done + diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-service-disable b/docker/php-official/8.5/conf/bin/usr-bin/docker-service-disable new file mode 100644 index 000000000..991f249c8 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-service-disable @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +exec docker-service disable "$@" diff --git a/docker/php-official/8.5/conf/bin/usr-bin/docker-service-enable b/docker/php-official/8.5/conf/bin/usr-bin/docker-service-enable new file mode 100644 index 000000000..da99c9aeb --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/docker-service-enable @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +exec docker-service enable "$@" + diff --git a/docker/php-official/8.5/conf/bin/usr-bin/service b/docker/php-official/8.5/conf/bin/usr-bin/service new file mode 100755 index 000000000..69874cb80 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/service @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +# Root check +if [ "$(/usr/bin/whoami)" != "root" ]; then + echo "[ERROR] Must be run as root" + exit 1 +fi + +function serviceHelp() { + echo "Usage: $(basename "$0") " +} + +function getServicePid() { + local serviceName="$1" + local servicePid=$(supervisorctl pid "${serviceName}:${serviceName}d") + + if [[ -z "$servicePid" ]] || [[ "$servicePid" == "0" ]]; then + echo "not running" + exit 1 + fi + + echo $servicePid +} + +# Param check +if [ "$#" -lt 2 ]; then + echo "[ERROR] Missing parameters" + serviceHelp + exit 1 +fi + +############################# +# Param init +############################# + +SERVICENAME="$1" +ACTION="$2" + +############################# +# Service aliases +############################# +case "$SERVICENAME" in + apache2|httpd) + SERVICENAME="apache" + ;; +esac + +############################# +# Action runner +############################# +case "$ACTION" in + stop|start|restart|status) + exec supervisorctl "$ACTION" "${SERVICENAME}:${SERVICENAME}d" + ;; + + pid) + echo $(getServicePid "${SERVICENAME}") + ;; + + check) + FIRST_PID=$(getServicePid "${SERVICENAME}") + sleep 5 + SECOND_PID=$(getServicePid "${SERVICENAME}") + + if [[ "$FIRST_PID" == "$SECOND_PID" ]]; then + echo "ok" + exit 0 + else + echo "not running" + exit 1 + fi + ;; + + + *) + echo "[ERROR] Invalid action" + serviceHelp + exit 1 + ;; + +esac diff --git a/docker/php-official/8.5/conf/bin/usr-bin/version-compare b/docker/php-official/8.5/conf/bin/usr-bin/version-compare new file mode 100644 index 000000000..ca450b0e9 --- /dev/null +++ b/docker/php-official/8.5/conf/bin/usr-bin/version-compare @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -o pipefail # trace ERR through pipes +set -o errtrace # trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +function versionCompare () { + if [[ $1 == $2 ]] + then + echo -n '=' + return + fi + local IFS=. + local i ver1=($1) ver2=($2) + # fill empty fields in ver1 with zeros + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) + do + ver1[i]=0 + done + for ((i=0; i<${#ver1[@]}; i++)) + do + if [[ -z ${ver2[i]} ]] + then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})) + then + echo -n '>' + return + fi + if ((10#${ver1[i]} < 10#${ver2[i]})) + then + echo -n '<' + return + fi + done + + echo -n '=' +} + +versionCompare "$1" "$2" diff --git a/docker/php-official/8.5/conf/etc/cron/.gitkeep b/docker/php-official/8.5/conf/etc/cron/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/etc/logrotate.d/php5-fpm b/docker/php-official/8.5/conf/etc/logrotate.d/php5-fpm new file mode 100644 index 000000000..e6ef4b123 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/logrotate.d/php5-fpm @@ -0,0 +1,12 @@ +/var/log/php5-fpm/fpm.log +/var/log/php5-fpm/access.log +/var/log/php5-fpm/slow.log +/var/log/php5-fpm/error.log { + missingok + notifempty + sharedscripts + delaycompress + postrotate + /bin/kill -SIGUSR1 `cat /var/run/php5-fpm.pid` 2>/dev/null || true + endscript +} diff --git a/docker/php-official/8.5/conf/etc/logrotate.d/syslog-ng b/docker/php-official/8.5/conf/etc/logrotate.d/syslog-ng new file mode 100644 index 000000000..4a6f9c54e --- /dev/null +++ b/docker/php-official/8.5/conf/etc/logrotate.d/syslog-ng @@ -0,0 +1,38 @@ +/var/log/syslog +{ + rotate 7 + daily + missingok + notifempty + delaycompress + compress + postrotate + /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` > /dev/null + endscript +} + +/var/log/mail.info +/var/log/mail.warn +/var/log/mail.err +/var/log/mail.log +/var/log/daemon.log +/var/log/kern.log +/var/log/auth.log +/var/log/user.log +/var/log/lpr.log +/var/log/cron.log +/var/log/debug +/var/log/messages +{ + rotate 4 + weekly + missingok + notifempty + compress + delaycompress + sharedscripts + postrotate + /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` > /dev/null + supervisorctl restart syslog-ng-stdout > /dev/null + endscript +} \ No newline at end of file diff --git a/docker/php-official/8.5/conf/etc/php/conf.d/.gitkeep b/docker/php-official/8.5/conf/etc/php/conf.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/etc/php/fpm/.gitkeep b/docker/php-official/8.5/conf/etc/php/fpm/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/etc/php/php.ini b/docker/php-official/8.5/conf/etc/php/php.ini new file mode 100644 index 000000000..447212118 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/php/php.ini @@ -0,0 +1 @@ +; placeholder diff --git a/docker/php-official/8.5/conf/etc/php/php.webdevops.ini b/docker/php-official/8.5/conf/etc/php/php.webdevops.ini new file mode 100644 index 000000000..aa1545ab8 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/php/php.webdevops.ini @@ -0,0 +1,34 @@ +; ------------------------------------- +; Docker Webdevops PHP configuration +; ------------------------------------- + +; this file will overwrite default php.ini settings + +display_errors = 0 +log_errors = 1 + +short_open_tag = Off +variables_order = 'GPCS' +request_order = 'GP' + +allow_url_fopen = On +allow_url_include = Off + +memory_limit = 512M +max_execution_time = 300 +max_input_time = 300 +post_max_size = 50M +upload_max_filesize = 50M +max_input_vars = 5000 + +expose_php = Off + +date.timezone = UTC + +mysql.default_host = mysql +mysqli.default_host = mysql + +opcache.memory_consumption = 256 +opcache.interned_strings_buffer = 16 +opcache.max_accelerated_files = 7963 +opcache.fast_shutdown = 1 diff --git a/docker/php-official/8.5/conf/etc/supervisor.conf b/docker/php-official/8.5/conf/etc/supervisor.conf new file mode 100644 index 000000000..479e0db08 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.conf @@ -0,0 +1,20 @@ +[supervisord] +nodaemon=true + +[unix_http_server] +file = /.supervisor.sock +chmod = 0700 +chown = root:root +username = root +password = {SHA}e982f17bcbe0f724063b708a4f76db211a999304 + +[supervisorctl] +serverurl = unix:///.supervisor.sock +username = root +password = docker + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[include] +files = /opt/docker/etc/supervisor.d/*.conf diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/.gitkeep b/docker/php-official/8.5/conf/etc/supervisor.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/cron.conf b/docker/php-official/8.5/conf/etc/supervisor.d/cron.conf new file mode 100644 index 000000000..ef0a71678 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/cron.conf @@ -0,0 +1,14 @@ +[group:cron] +programs=crond +priority=25 + +[program:crond] +command = /opt/docker/bin/service.d/cron.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/dnsmasq.conf b/docker/php-official/8.5/conf/etc/supervisor.d/dnsmasq.conf new file mode 100644 index 000000000..9832ffca7 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/dnsmasq.conf @@ -0,0 +1,14 @@ +[group:dnsmasq] +programs=dnsmasqd +priority=15 + +[program:dnsmasqd] +command = /opt/docker/bin/service.d/dnsmasq.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/php-fpm.conf b/docker/php-official/8.5/conf/etc/supervisor.d/php-fpm.conf new file mode 100644 index 000000000..5781f5b0a --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/php-fpm.conf @@ -0,0 +1,15 @@ +[group:php-fpm] +programs=php-fpmd +priority=20 + +[program:php-fpmd] +command = /opt/docker/bin/service.d/php-fpm.sh +process_name=%(program_name)s +startsecs = 0 +autostart = true +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/postfix.conf b/docker/php-official/8.5/conf/etc/supervisor.d/postfix.conf new file mode 100644 index 000000000..b8d70bb40 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/postfix.conf @@ -0,0 +1,15 @@ +[group:postfix] +programs=postfixd +priority=30 + +[program:postfixd] +directory = /etc/postfix +command = /opt/docker/bin/service.d/postfix.sh +process_name=%(program_name)s +startsecs = 0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/ssh.conf b/docker/php-official/8.5/conf/etc/supervisor.d/ssh.conf new file mode 100644 index 000000000..0ecd798d6 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/ssh.conf @@ -0,0 +1,14 @@ +[group:ssh] +programs=sshd +priority=30 + +[program:sshd] +command = /opt/docker/bin/service.d/ssh.sh +process_name=%(program_name)s +startsecs=0 +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5/conf/etc/supervisor.d/syslog.conf b/docker/php-official/8.5/conf/etc/supervisor.d/syslog.conf new file mode 100644 index 000000000..20d1e238c --- /dev/null +++ b/docker/php-official/8.5/conf/etc/supervisor.d/syslog.conf @@ -0,0 +1,13 @@ +[group:syslog] +programs=syslogd +priority=10 + +[program:syslogd] +command = /opt/docker/bin/service.d/syslog-ng.sh +process_name=%(program_name)s +autostart = false +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/docker/php-official/8.5/conf/etc/syslog-ng/syslog-ng.conf b/docker/php-official/8.5/conf/etc/syslog-ng/syslog-ng.conf new file mode 100644 index 000000000..c69841581 --- /dev/null +++ b/docker/php-official/8.5/conf/etc/syslog-ng/syslog-ng.conf @@ -0,0 +1,48 @@ +@version: 3.5 + +template t_isostamp { + # syslog-t_isostamp START + template("[SYSLOG] $MSGHDR$MSG\n"); + # syslog-t_isostamp END +}; + +options { + # syslog-options START + file-template(t_isostamp); + chain_hostnames(off); + flush_lines(0); + use-dns(no); + use_fqdn(no); + owner("root"); + group("adm"); + perm(0640); + stats_freq(0); + # syslog-options START +}; + +source s_src { + # syslog-s_src START + unix-stream("/dev/log"); + internal(); + # syslog-s_src END +}; + +filter f_filter { + # syslog-f_filter START + not facility(auth, authpriv); + # syslog-f_filter END +}; + +destination d_all { + # syslog-d_all START + pipe("/docker.stdout"); + # syslog-d_all END +}; + +log { + # syslog-log START + source(s_src); + filter(f_filter); + destination(d_all); + # syslog-log START +}; diff --git a/docker/php-official/8.5/conf/provision/ansible.cfg b/docker/php-official/8.5/conf/provision/ansible.cfg new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/.gitkeep b/docker/php-official/8.5/conf/provision/bootstrap.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/10-entrypoint.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/10-entrypoint.sh new file mode 100644 index 000000000..413e7b37c --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/10-entrypoint.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Link main entrypoint script to /entrypoint +ln -sf /opt/docker/bin/entrypoint.sh /entrypoint + +# Link entrypoint cmd shortcut conf directory to /entrypoint.cmd +ln -sf /opt/docker/bin/entrypoint.d /entrypoint.cmd + +# Create /entrypoint.d +mkdir -p /entrypoint.d +chmod 700 /entrypoint.d +chown root:root /entrypoint.d + + diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/10-permissions.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/10-permissions.sh new file mode 100644 index 000000000..20d602bdd --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/10-permissions.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash + diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/10-php-init.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/10-php-init.sh new file mode 100644 index 000000000..db0141b8f --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/10-php-init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +PHP_VERSION=$(php -r 'echo phpversion();' | cut -d '-' -f 1) +IMAGE_FAMILY=$(docker-image-info family) diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/10-supervisor.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/10-supervisor.sh new file mode 100644 index 000000000..311daee4c --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/10-supervisor.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Remove /usr/sbin/service (images have custom service script) +rm -rf /usr/sbin/service + +# Remove existing supervisor configuration +rm -rf -- /etc/supervisor* + +# Link supervisor configuration script +ln -sf /opt/docker/etc/supervisor.conf /etc/supervisord.conf diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/10-user-application.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/10-user-application.sh new file mode 100644 index 000000000..5bc865e80 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/10-user-application.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Add group +groupadd -g "$APPLICATION_GID" "$APPLICATION_GROUP" + +# Add user +useradd -u "$APPLICATION_UID" --home "/home/application" --create-home --shell /bin/bash --no-user-group "$APPLICATION_USER" + +# Assign user to group +usermod -g "$APPLICATION_GROUP" "$APPLICATION_USER" diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/11-php-conf.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/11-php-conf.sh new file mode 100644 index 000000000..ee56ccaae --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/11-php-conf.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +PHP_CLEAR_ENV_AVAILABLE=1 + +PHP_ETC_DIR=/usr/local/etc/php +PHP_MAIN_CONF=/usr/local/etc/php-fpm.conf +PHP_POOL_CONF=www.conf +PHP_POOL_DIR=/usr/local/etc/php-fpm.d +PHP_FPM_BIN=/usr/local/sbin/php-fpm +PHP_MOD_INI_DIR=/usr/local/etc/php/conf.d diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/20-app.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/20-app.sh new file mode 100644 index 000000000..749966b67 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/20-app.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Create /app folder +mkdir -p /app +chown "$APPLICATION_USER":"$APPLICATION_GROUP" /app diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh new file mode 100644 index 000000000..121788e60 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm-pool.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +# Rename pool file file to application.conf +if [[ ! -f "/opt/docker/etc/php/fpm/pool.d/application.conf" ]]; then + # Move php-fpm pool directory file to /opt/docker/etc/php/ + mv -- "$PHP_POOL_DIR" /opt/docker/etc/php/fpm/pool.d + + mv -- "/opt/docker/etc/php/fpm/pool.d/${PHP_POOL_CONF}" /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +# Remove php-fpm pool directory +rm -rf -- "$PHP_POOL_DIR" + +# Symlink php-fpm pool file to original destination +ln -sf -- /opt/docker/etc/php/fpm/pool.d "$PHP_POOL_DIR" + +# Configure php-fpm pool (application.conf) +go-replace --mode=lineinfile --regex \ + -s '^[\s;]*catch_workers_output[\s]*=' -r 'catch_workers_output = yes' \ + -s '^[\s;]*access.format[\s]*=' -r 'access.format = "[php-fpm:access] %R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"' \ + -s '^[\s;]*access.log[\s]*=' -r 'access.log = /docker.stdout' \ + -s '^[\s;]*slowlog[\s]*=' -r 'slowlog = /docker.stderr' \ + -s '^[\s;]*php_admin_value\[error_log\][\s]*=' -r 'php_admin_value[error_log] = /docker.stderr' \ + -s '^[\s;]*php_admin_value\[log_errors\][\s]*=' -r 'php_admin_value[log_errors] = on' \ + -s '^[\s;]*listen.allowed_clients[\s]*=' -r ";listen.allowed_clients" \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + +# Fix user setting +go-replace --mode=line --regex \ + -s '^[\s;]*user[\s]*=' -r "user = $APPLICATION_USER" \ + -s '^[\s;]*group[\s]*=' -r "group = $APPLICATION_GROUP" \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + +if [[ "$PHP_CLEAR_ENV_AVAILABLE" -eq 1 ]]; then + # Clear env setting available, disable clearing of environment variables + go-replace --mode=lineinfile --regex \ + -s '^[\s;]*clear_env[\s]*=' -r 'clear_env = no' \ + -- /opt/docker/etc/php/fpm/pool.d/application.conf + rm -f /opt/docker/bin/service.d/php-fpm.d/11-clear-env.sh +else + # Append clear env workaround in php-fpm pool (old php-fpm versions) + echo ';#CLEAR_ENV_WORKAROUND#' >> /opt/docker/etc/php/fpm/pool.d/application.conf + +fi diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm.sh new file mode 100644 index 000000000..873ddf608 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php-fpm.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Link main php-fpm binary +ln -sf -- "$PHP_FPM_BIN" /usr/local/bin/php-fpm + +# Move php-fpm main file to /opt/docker/etc/php/fpm/ and create symlink +if [[ ! -f /opt/docker/etc/php/fpm/php-fpm.conf ]]; then + mv -- "$PHP_MAIN_CONF" /opt/docker/etc/php/fpm/php-fpm.conf +else + rm -f -- "PHP_MAIN_CONF" +fi +ln -sf -- /opt/docker/etc/php/fpm/php-fpm.conf "$PHP_MAIN_CONF" + +# Configure php-fpm main (all versions) +go-replace --mode=lineinfile --regex \ + --lineinfile-after='\[global\]' \ + -s '^[\s;]*error_log[\s]*=' -r 'error_log = /docker.stderr' \ + -s '^[\s;]*pid[\s]*=' -r 'pid = /var/run/php-fpm.pid' \ + -- /opt/docker/etc/php/fpm/php-fpm.conf + +if [[ "$(version-compare "$PHP_VERSION" "5.5.999")" == "<" ]]; then + # listen on public IPv4 port + # no ipv6 sockets available for old php version + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = 0.0.0.0:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' +else + # listen on public IPv6 port + go-replace --mode=line --regex \ + -s '^[\s;]*listen[\s]*=' -r 'listen = [::]:9000' \ + --path=/opt/docker/etc/php/fpm/ \ + --path-pattern='*.conf' + +fi + +if [[ "$(version-compare "$PHP_VERSION" "5.99.999")" == "<" ]]; then + # Configure php-fpm main (php 5.x) + go-replace --mode=lineinfile --regex \ + --lineinfile-after='\[global\]' \ + -s '^[\s;]*daemonize[\s]*=' -r 'daemonize = no' \ + -- /opt/docker/etc/php/fpm/php-fpm.conf +fi diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php.sh new file mode 100644 index 000000000..c1e716300 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/20-setup-php.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + # Register webdevops ini + ln -sf "/opt/docker/etc/php/php.webdevops.ini" "${PHP_ETC_DIR}/conf.d/98-webdevops.ini" + + # Register custom php ini + ln -sf "/opt/docker/etc/php/php.ini" "${PHP_ETC_DIR}/conf.d/99-docker.ini" + ;; +esac diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/30-setup-ioncube.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/30-setup-ioncube.sh new file mode 100644 index 000000000..4a348a38a --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/30-setup-ioncube.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +if [ $IMAGE_FAMILY == "Alpine" ]; then + echo "Skipping ionCube installation on Alpine" + return +fi + +echo "Installing ionCube loader" + +DOWNLOAD_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz" +TMP_FILE="/tmp/ioncube_loaders.tar.gz" + +echo "Downloading ..." +curl -sS ${DOWNLOAD_URL} -o ${TMP_FILE} +echo "Unpacking ..." +tar -xzf ${TMP_FILE} -C /tmp + +PHP_VERSION=`php -v | head -1 | grep -o 'PHP [0-9].[0-9]' | sed -r 's/PHP //g'` +PHP_EXTENSION_DIR=`php -i | grep -o -m 1 'extension_dir .* =' | sed -r 's/extension_dir => //g' | sed -r 's/ =//g'` +MOD_INI="${PHP_MOD_INI_DIR}/00-ioncube.ini" +SO_FILE="${PHP_EXTENSION_DIR}/ioncube_loader_lin_${PHP_VERSION}.so" + +echo "PHP-VERSION: ${PHP_VERSION}" +echo "PHP-EXTENSION-DIR: ${PHP_EXTENSION_DIR}" +if [[ ! -f "/tmp/ioncube/ioncube_loader_lin_${PHP_VERSION}.so" ]]; then + echo "There is no ioncube available for PHP${PHP_VERSION}, skipping installation" +else + echo "Installing ${SO_FILE}" + cp "/tmp/ioncube/ioncube_loader_lin_${PHP_VERSION}.so" ${SO_FILE} + + echo "Writing module ini" + echo "[ioncube]" > ${MOD_INI} + echo "zend_extension = ${SO_FILE}" >> ${MOD_INI} + echo "; priority=01" >> ${MOD_INI} + + echo "Cleaning up" + rm -rf $TMP_FILE + rm -rf /tmp/ioncube + + echo "Enabling ionCube PHP module" + case "$IMAGE_FAMILY" in + Debian|Ubuntu) + # Enable ionCube (if available) + if [[ -f "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" ]]; then + ln -sf "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" "${PHP_ETC_DIR}/cli/conf.d/00-ioncube.ini" + ln -sf "${PHP_ETC_DIR}/mods-available/00-ioncube.ini" "${PHP_ETC_DIR}/fpm/conf.d/00-ioncube.ini" + fi + ;; + esac +fi diff --git a/docker/php-official/8.5/conf/provision/bootstrap.d/90-cleanup.sh b/docker/php-official/8.5/conf/provision/bootstrap.d/90-cleanup.sh new file mode 100644 index 000000000..3ca393da6 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/bootstrap.d/90-cleanup.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# Remove default cronjobs +rm -f -- \ + /etc/cron.daily/logrotate \ + /etc/cron.daily/apt-compat \ + /etc/cron.daily/dpkg \ + /etc/cron.daily/passwd \ + /etc/cron.daily/0yum-daily.cron \ + /etc/cron.daily/logrotate \ + /etc/cron.hourly/0yum-hourly.cron \ + /etc/periodic/daily/logrotate diff --git a/docker/php-official/8.5/conf/provision/build.d/.gitkeep b/docker/php-official/8.5/conf/provision/build.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/build.d/10-cleanup.sh b/docker/php-official/8.5/conf/provision/build.d/10-cleanup.sh new file mode 100644 index 000000000..41031b784 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/build.d/10-cleanup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +## remove logs (each bootstrap) +rm -rf -- /var/log/* +rm -rf -- /var/tmp/* +rm -rf -- /tmp/* +rm -rf -- /root/.profile diff --git a/docker/php-official/8.5/conf/provision/entrypoint.d/.gitkeep b/docker/php-official/8.5/conf/provision/entrypoint.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/entrypoint.d/05-permissions.sh b/docker/php-official/8.5/conf/provision/entrypoint.d/05-permissions.sh new file mode 100644 index 000000000..6f77d8e40 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/entrypoint.d/05-permissions.sh @@ -0,0 +1,2 @@ +# Fix rights of /tmp (can be a volume) +chmod 1777 /tmp diff --git a/docker/php-official/8.5/conf/provision/entrypoint.d/20-php-fpm.sh b/docker/php-official/8.5/conf/provision/entrypoint.d/20-php-fpm.sh new file mode 100644 index 000000000..5ab722cf7 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/entrypoint.d/20-php-fpm.sh @@ -0,0 +1,80 @@ +####################################### +### FPM MAIN +####################################### + +container-file-auto-restore "/opt/docker/etc/php/fpm/php-fpm.conf" + +echo '' >> /opt/docker/etc/php/fpm/php-fpm.conf +echo '; container env settings' >> /opt/docker/etc/php/fpm/php-fpm.conf +echo '[global]' >> /opt/docker/etc/php/fpm/php-fpm.conf + +if [[ -n "${FPM_PROCESS_MAX+x}" ]]; then + echo "process.max = ${FPM_PROCESS_MAX}" >> /opt/docker/etc/php/fpm/php-fpm.conf +fi + +# General fpm main setting +for ENV_VAR in $(envListVars "fpm\.global\."); do + env_key=${ENV_VAR#fpm.global.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/fpm/php-fpm.conf +done + +####################################### +### FPM POOL +####################################### + +container-file-auto-restore "/opt/docker/etc/php/fpm/pool.d/application.conf" + +echo '' >> /opt/docker/etc/php/fpm/pool.d/application.conf +echo '; container env settings' >> /opt/docker/etc/php/fpm/pool.d/application.conf + +# General fpm pool setting +for ENV_VAR in $(envListVars "fpm\.pool\."); do + env_key=${ENV_VAR#fpm.pool.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +done + + +if [[ -n "${FPM_PM_MAX_CHILDREN+x}" ]]; then + echo "pm.max_children = ${FPM_PM_MAX_CHILDREN}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_START_SERVERS+x}" ]]; then + echo "pm.start_servers = ${FPM_PM_START_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_MIN_SPARE_SERVERS+x}" ]]; then + echo "pm.min_spare_servers = ${FPM_PM_MIN_SPARE_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PM_MAX_SPARE_SERVERS+x}" ]]; then + echo "pm.max_spare_servers = ${FPM_PM_MAX_SPARE_SERVERS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_PROCESS_IDLE_TIMEOUT+x}" ]]; then + echo "pm.process_idle_timeout = ${FPM_PROCESS_IDLE_TIMEOUT}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_MAX_REQUESTS+x}" ]]; then + echo "pm.max_requests = ${FPM_MAX_REQUESTS}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_REQUEST_TERMINATE_TIMEOUT+x}" ]]; then + echo "request_terminate_timeout = ${FPM_REQUEST_TERMINATE_TIMEOUT}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_RLIMIT_FILES+x}" ]]; then + echo "rlimit_files = ${FPM_RLIMIT_FILES}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +if [[ -n "${FPM_RLIMIT_CORE+x}" ]]; then + echo "rlimit_core = ${FPM_RLIMIT_CORE}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi + +# Workaround for official PHP images +if [[ -n "${PHP_SENDMAIL_PATH+x}" ]]; then + echo "php_admin_value[sendmail_path] = ${PHP_SENDMAIL_PATH}" >> /opt/docker/etc/php/fpm/pool.d/application.conf +fi diff --git a/docker/php-official/8.5/conf/provision/entrypoint.d/20-php.sh b/docker/php-official/8.5/conf/provision/entrypoint.d/20-php.sh new file mode 100644 index 000000000..2e208fb85 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/entrypoint.d/20-php.sh @@ -0,0 +1,75 @@ +container-file-auto-restore "/opt/docker/etc/php/php.webdevops.ini" + +echo '' >> /opt/docker/etc/php/php.webdevops.ini +echo '; container env settings' >> /opt/docker/etc/php/php.webdevops.ini + +# General php setting +for ENV_VAR in $(envListVars "php\."); do + env_key=${ENV_VAR#php.} + env_val=$(envGetValue "$ENV_VAR") + + echo "$env_key = ${env_val}" >> /opt/docker/etc/php/php.webdevops.ini +done + + +if [[ -n "${PHP_DATE_TIMEZONE+x}" ]]; then + echo "date.timezone = ${PHP_DATE_TIMEZONE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_DISPLAY_ERRORS+x}" ]]; then + echo "display_errors = ${PHP_DISPLAY_ERRORS}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_MEMORY_LIMIT+x}" ]]; then + echo "memory_limit = ${PHP_MEMORY_LIMIT}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_MAX_EXECUTION_TIME+x}" ]]; then + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_POST_MAX_SIZE+x}" ]]; then + echo "post_max_size = ${PHP_POST_MAX_SIZE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_UPLOAD_MAX_FILESIZE+x}" ]]; then + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_MEMORY_CONSUMPTION+x}" ]]; then + echo "opcache.memory_consumption = ${PHP_OPCACHE_MEMORY_CONSUMPTION}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_MAX_ACCELERATED_FILES+x}" ]]; then + echo "opcache.max_accelerated_files = ${PHP_OPCACHE_MAX_ACCELERATED_FILES}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_VALIDATE_TIMESTAMPS+x}" ]]; then + echo "opcache.validate_timestamps = ${PHP_OPCACHE_VALIDATE_TIMESTAMPS}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_REVALIDATE_FREQ+x}" ]]; then + echo "opcache.revalidate_freq = ${PHP_OPCACHE_REVALIDATE_FREQ}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +if [[ -n "${PHP_OPCACHE_INTERNED_STRINGS_BUFFER+x}" ]]; then + echo "opcache.interned_strings_buffer = ${PHP_OPCACHE_INTERNED_STRINGS_BUFFER}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +# Workaround for official PHP images +if [[ -n "${PHP_SENDMAIL_PATH+x}" ]]; then + echo "sendmail_path = ${PHP_SENDMAIL_PATH}" >> /opt/docker/etc/php/php.webdevops.ini +fi + +# Disable all PHP mods specified in PHP_DISMOD as comma separated list +if [[ -n "${PHP_DISMOD+x}" ]]; then + ini_dir_cli=$(php -i | grep 'Scan this dir for additional .ini files' | cut -c44-) + ini_dir_fpm=$(php-fpm -i | grep 'Scan this dir for additional .ini files' | cut -c44-) + for DISABLE_MOD in ${PHP_DISMOD//,/ }; do + rm -f ${ini_dir_cli}/*${DISABLE_MOD}* + rm -f ${ini_dir_fpm}/*${DISABLE_MOD}* + done +fi + +# Link composer version accordingly +ln -sf /usr/local/bin/composer${COMPOSER_VERSION:-2} /usr/local/bin/composer diff --git a/docker/php-official/8.5/conf/provision/onbuild.d/.gitkeep b/docker/php-official/8.5/conf/provision/onbuild.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/roles/.gitkeep b/docker/php-official/8.5/conf/provision/roles/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/service.d/.gitkeep b/docker/php-official/8.5/conf/provision/service.d/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docker/php-official/8.5/conf/provision/service.d/cron.sh b/docker/php-official/8.5/conf/provision/service.d/cron.sh new file mode 100644 index 000000000..bd8a54781 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/service.d/cron.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install cron + ;; + + RedHat) + yum-install cronie + ;; +esac diff --git a/docker/php-official/8.5/conf/provision/service.d/dnsmasq.sh b/docker/php-official/8.5/conf/provision/service.d/dnsmasq.sh new file mode 100644 index 000000000..9e5c3228c --- /dev/null +++ b/docker/php-official/8.5/conf/provision/service.d/dnsmasq.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install dnsmasq + ;; + + RedHat) + yum-install dnsmasq + ;; + + Alpine) + apk-install dnsmasq + ;; +esac + +# Configuration +go-replace --mode=line \ + -s '^[\s]*user[\s]*=' -r 'user = root' \ + -s '^[\s]*conf-dir[\s]*=' -r 'conf-dir = /etc/dnsmasq.d' \ + -- /etc/dnsmasq.conf diff --git a/docker/php-official/8.5/conf/provision/service.d/postfix.sh b/docker/php-official/8.5/conf/provision/service.d/postfix.sh new file mode 100644 index 000000000..a8c7cc61b --- /dev/null +++ b/docker/php-official/8.5/conf/provision/service.d/postfix.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install postfix + ;; + + RedHat) + yum-install postfix + + # Fix mysql lib + if [[ ! -f /lib64/libmysqlclient.so.18 ]] && [[ -f /usr/lib64/mysql/libmysqlclient.so.18 ]]; then + ln -s /usr/lib64/mysql/libmysqlclient.so.18 /lib64/libmysqlclient.so.18 + fi + ;; + + Alpine) + apk-install postfix + ;; +esac + +# Configuration +go-replace --mode=line \ + -s '^[\s]*mydestination[\s]*=' -r 'mydestination = ' \ + -s '^[\s]*message_size_limit[\s]*=' -r 'message_size_limit = 15240000' \ + -s '^[\s]*smtp_use_tls[\s]*=' -r 'smtp_use_tls = yes' \ + -s '^[\s]*smtp_tls_security_level[\s]*=' -r 'smtp_tls_security_level = may' \ + -s '^[\s]*myhostname[\s]*=' -r '# myhostname' \ + -- /etc/postfix/main.cf diff --git a/docker/php-official/8.5/conf/provision/service.d/ssh.sh b/docker/php-official/8.5/conf/provision/service.d/ssh.sh new file mode 100644 index 000000000..63d7a9f3a --- /dev/null +++ b/docker/php-official/8.5/conf/provision/service.d/ssh.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install openssh-server + ;; + + RedHat) + yum-install openssh-server + ;; + + Alpine) + apk-install openssh + ;; +esac diff --git a/docker/php-official/8.5/conf/provision/service.d/syslog.sh b/docker/php-official/8.5/conf/provision/service.d/syslog.sh new file mode 100644 index 000000000..675d0b061 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/service.d/syslog.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +IMAGE_FAMILY=$(docker-image-info family) + +# Installation +case "$IMAGE_FAMILY" in + Debian|Ubuntu) + apt-install syslog-ng syslog-ng-core + ;; + + RedHat) + yum-install syslog-ng + + # remove logrotate (not needed for docker) + rm -f "/etc/cron.daily/logrotate" + ;; + + Alpine) + apk-install syslog-ng + ;; +esac + +## Configuration +SYSLOG_NG_VERSION=$(syslog-ng --version | grep -E -e '^Installer-Version:[ ]+[0-9]+\.[0-9]+' | head -n 1 | awk '{print $2}' | cut -f 1,2 -d .) + +# Disable caps inside container +if [[ -f /etc/default/syslog-ng ]]; then + go-replace --mode=lineinfile \ + -s "SYSLOGNG_OPTS" -r "SYSLOGNG_OPTS = --no-caps" \ + -- /etc/default/syslog-ng +fi + +# Symlink configuration +ln -s -f /opt/docker/etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf + +go-replace --mode=lineinfile \ + -s "@version" -r "@version: ${SYSLOG_NG_VERSION}" \ + -- /etc/syslog-ng/syslog-ng.conf + +# Ensure /var/lib/syslog-ng exists +mkdir -p /var/lib/syslog-ng diff --git a/docker/php-official/8.5/conf/provision/variables-webdevops.yml b/docker/php-official/8.5/conf/provision/variables-webdevops.yml new file mode 100644 index 000000000..0b2a21a95 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/variables-webdevops.yml @@ -0,0 +1,7 @@ +--- + +docker_image_info_family: "{{ lookup('pipe', 'docker-image-info family') }}" +docker_image_info_distribution: "{{ lookup('pipe', 'docker-image-info dist') }}" +docker_image_info_distribution_version: "{{ lookup('pipe', 'docker-image-info dist-version') }}" +docker_image_info_distribution_release: "{{ lookup('pipe', 'docker-image-info dist-release') }}" +docker_image_info_distribution_codename: "{{ lookup('pipe', 'docker-image-info dist-codename') }}" diff --git a/docker/php-official/8.5/conf/provision/variables.yml b/docker/php-official/8.5/conf/provision/variables.yml new file mode 100644 index 000000000..0b2a21a95 --- /dev/null +++ b/docker/php-official/8.5/conf/provision/variables.yml @@ -0,0 +1,7 @@ +--- + +docker_image_info_family: "{{ lookup('pipe', 'docker-image-info family') }}" +docker_image_info_distribution: "{{ lookup('pipe', 'docker-image-info dist') }}" +docker_image_info_distribution_version: "{{ lookup('pipe', 'docker-image-info dist-version') }}" +docker_image_info_distribution_release: "{{ lookup('pipe', 'docker-image-info dist-release') }}" +docker_image_info_distribution_codename: "{{ lookup('pipe', 'docker-image-info dist-codename') }}" diff --git a/docker/php/8.5 b/docker/php/8.5 new file mode 120000 index 000000000..a0754b593 --- /dev/null +++ b/docker/php/8.5 @@ -0,0 +1 @@ +../php-official/8.5 \ No newline at end of file diff --git a/docker/php/8.5-alpine b/docker/php/8.5-alpine new file mode 120000 index 000000000..d3fc8eeba --- /dev/null +++ b/docker/php/8.5-alpine @@ -0,0 +1 @@ +../php-official/8.5-alpine \ No newline at end of file diff --git a/documentation/docs/content/DockerImages/dockerfiles/include/image-tag-php.rst b/documentation/docs/content/DockerImages/dockerfiles/include/image-tag-php.rst index a7f2bb797..c010499b2 100644 --- a/documentation/docs/content/DockerImages/dockerfiles/include/image-tag-php.rst +++ b/documentation/docs/content/DockerImages/dockerfiles/include/image-tag-php.rst @@ -12,6 +12,7 @@ Tag Distribution name PHP Version ``8.2`` *customized official php image* PHP 8.2 ``8.3`` *customized official php image* PHP 8.3 ``8.4`` *customized official php image* PHP 8.4 +``8.5`` *customized official php image* PHP 8.5 ``7.1-alpine`` *deprecated* PHP 7.1 ``7.2-alpine`` *deprecated* PHP 7.2 ``7.3-alpine`` *deprecated* PHP 7.3 @@ -21,6 +22,7 @@ Tag Distribution name PHP Version ``8.2-alpine`` *customized official php image* PHP 8.2 ``8.3-alpine`` *customized official php image* PHP 8.3 ``8.4-alpine`` *customized official php image* PHP 8.4 +``8.5-alpine`` *customized official php image* PHP 8.5 ``alpine`` *deprecated* PHP 7.x ``alpine-php7`` *deprecated* PHP 7.x ``alpine-php5`` *deprecated* PHP 5.6 diff --git a/template/Dockerfile/images/php.jinja2 b/template/Dockerfile/images/php.jinja2 index 87f6501ae..4d86bfed9 100644 --- a/template/Dockerfile/images/php.jinja2 +++ b/template/Dockerfile/images/php.jinja2 @@ -65,25 +65,25 @@ && curl -sS -o /tmp/icu.tar.gz -L https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz \ && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && make install && cd / && rm -rf /tmp/icu* \ # Install extensions -{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} && docker-php-ext-configure intl --with-icu-dir=/usr/local \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ {%- else %} && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \ && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \ {%- endif %} -{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && git clone --branch latest --depth 1 https://github.com/php-amqp/php-amqp.git /usr/src/php/ext/amqp \ && cd /usr/src/php/ext/amqp && git submodule update --init \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ {%- endif %} && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ -{%- if version != '8.4' %} +{%- if version != '8.4' and version != '8.5' %} && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ -{%- endif %} +{%- endif %} && docker-php-ext-install \ bcmath \ -{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} amqp \ imagick \ ffi \ @@ -100,10 +100,10 @@ {%- if version|int == 5 or version == '7.0' or version == '7.1' %} mcrypt \ {%- endif %} -{%- if version != '8.4' %} +{%- if version != '8.4' and version != '8.5' %} imap \ {%- endif %} -{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} hash \ {%- endif %} pcntl \ @@ -112,14 +112,14 @@ pgsql \ soap \ sockets \ -{%- if version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} tokenizer \ {%- endif %} sysvmsg \ sysvsem \ sysvshm \ shmop \ -{%- if version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} xmlrpc \ {%- endif %} xsl \ @@ -139,7 +139,7 @@ && echo extension=imagick.so > /usr/local/etc/php/conf.d/imagick.ini \ && echo extension=mongodb.so > /usr/local/etc/php/conf.d/mongodb.ini \ && echo extension=memcached.so > /usr/local/etc/php/conf.d/memcached.ini \ -{%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && pecl install memcached \ && pecl install apcu \ && pecl install excimer \ @@ -248,7 +248,11 @@ icu-dev \ postgresql-dev \ libxml2-dev \ + {%- if version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} + samba-dev \ + {%- else %} ldb-dev \ + {%- endif %} pcre-dev \ libxslt-dev \ libzip-dev \ @@ -266,7 +270,7 @@ && curl -sS -o /tmp/icu.tar.gz -L https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz \ && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && make install && cd / && rm -rf /tmp/icu* \ # Install extensions -{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && PKG_CONFIG_PATH=/usr/local docker-php-ext-configure intl \ && docker-php-ext-configure gd --with-jpeg --with-freetype --with-webp \ && git clone --branch master --depth 1 https://github.com/Imagick/imagick.git /usr/src/php/ext/imagick \ @@ -277,9 +281,9 @@ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \ {%- endif %} && docker-php-ext-configure ldap \ -{%- if version != '8.4' %} +{%- if version != '8.4' and version != '8.5' %} && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ -{%- endif %} +{%- endif %} && docker-php-ext-install \ bcmath \ bz2 \ @@ -287,7 +291,7 @@ exif \ ftp \ gmp \ -{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} ffi \ imagick \ amqp \ @@ -296,10 +300,10 @@ gettext \ ldap \ mysqli \ -{%- if version != '8.4' %} +{%- if version != '8.4' and version != '8.5' %} imap \ -{%- endif %} -{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- endif %} +{%- if version != '7.4' and version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} hash \ {%- endif %} pcntl \ @@ -308,14 +312,14 @@ pgsql \ soap \ sockets \ -{%- if version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} tokenizer \ {%- endif %} sysvmsg \ sysvsem \ sysvshm \ shmop \ -{%- if version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' %} +{%- if version != '8.0' and version != '8.1' and version != '8.2' and version != '8.3' and version != '8.4' and version != '8.5' %} xmlrpc \ {%- endif %} xsl \ @@ -324,7 +328,7 @@ gettext \ opcache \ # Install extensions for PHP 7.x - {%- if version == '7.3' or version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} + {%- if version == '7.3' or version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} # Memcached for 7.3 can currently only be built from master && MEMCACHED="`mktemp -d`" \ && curl -skL https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz | tar zxf - --strip-components 1 -C $MEMCACHED \ @@ -335,7 +339,7 @@ && printf "no --disable-memcached-sasl\n" | pecl install memcached-3.0.4 \ && docker-php-ext-enable memcached \ {%- endif %} -{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} +{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && pecl install apcu \ && pecl install excimer \ && pecl install opentelemetry \ @@ -398,7 +402,11 @@ icu-dev \ postgresql-dev \ libxml2-dev \ + {%- if version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} + samba-dev \ + {%- else %} ldb-dev \ + {%- endif %} pcre-dev \ libxslt-dev \ libzip-dev \ @@ -420,7 +428,7 @@ && apt-install tideways-php tideways-daemon \ {%- if version|int == 5 %} && pecl install xdebug-2.5.5 \ - {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} + {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && pecl install xdebug \ {%- elif version == '7.0' or version == '7.1' %} && pecl install xdebug-2.8.1 \ From 0e8ace59b5a83454351ef5d8efa158f3be3aee52 Mon Sep 17 00:00:00 2001 From: Matthias Vogel Date: Mon, 1 Dec 2025 15:38:25 +0100 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=90=9B=20fix=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit remove opcache for php 8.5 as it is included. use pie to install alpha3 of xdebug 3.5.0 (as only it is compatible with php 8.5) do not install amqp as it is not compatbile with 8.5 at all --- docker/php-apache-dev/8.5-alpine/Dockerfile | 5 +++- docker/php-apache-dev/8.5/Dockerfile | 5 +++- docker/php-dev/8.5-alpine/Dockerfile | 5 +++- docker/php-dev/8.5/Dockerfile | 5 +++- .../8.3-alpine/Dockerfile.jinja2 | 2 +- .../8.4-alpine/Dockerfile.jinja2 | 2 +- docker/php-nginx-dev/8.5-alpine/Dockerfile | 5 +++- .../8.5-alpine/Dockerfile.jinja2 | 2 +- docker/php-nginx-dev/8.5/Dockerfile | 5 +++- docker/php-official/5.6/Dockerfile | 1 - docker/php-official/7.0/Dockerfile | 1 - docker/php-official/7.1-alpine/Dockerfile | 1 - docker/php-official/7.1/Dockerfile | 1 - docker/php-official/7.2-alpine/Dockerfile | 1 - docker/php-official/7.2/Dockerfile | 1 - docker/php-official/7.3-alpine/Dockerfile | 1 - docker/php-official/7.3/Dockerfile | 1 - docker/php-official/7.4-alpine/Dockerfile | 1 - docker/php-official/7.4/Dockerfile | 2 +- docker/php-official/8.0-alpine/Dockerfile | 1 - docker/php-official/8.0/Dockerfile | 1 - docker/php-official/8.1-alpine/Dockerfile | 1 - docker/php-official/8.1/Dockerfile | 1 - docker/php-official/8.2-alpine/Dockerfile | 1 - docker/php-official/8.2/Dockerfile | 1 - docker/php-official/8.3-alpine/Dockerfile | 1 - docker/php-official/8.3/Dockerfile | 1 - docker/php-official/8.4-alpine/Dockerfile | 1 - docker/php-official/8.4/Dockerfile | 1 - docker/php-official/8.5-alpine/Dockerfile | 5 +--- docker/php-official/8.5/Dockerfile | 5 +--- template/Dockerfile/images/php.jinja2 | 24 +++++++++++++++---- 32 files changed, 50 insertions(+), 41 deletions(-) diff --git a/docker/php-apache-dev/8.5-alpine/Dockerfile b/docker/php-apache-dev/8.5-alpine/Dockerfile index 02781dc8b..37e099787 100644 --- a/docker/php-apache-dev/8.5-alpine/Dockerfile +++ b/docker/php-apache-dev/8.5-alpine/Dockerfile @@ -24,7 +24,10 @@ RUN set -x \ make \ autoconf \ g++ \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && apk del -f --purge \ autoconf \ linux-headers \ diff --git a/docker/php-apache-dev/8.5/Dockerfile b/docker/php-apache-dev/8.5/Dockerfile index 6dd17f1ab..2ec49830d 100644 --- a/docker/php-apache-dev/8.5/Dockerfile +++ b/docker/php-apache-dev/8.5/Dockerfile @@ -22,7 +22,10 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/docker/php-dev/8.5-alpine/Dockerfile b/docker/php-dev/8.5-alpine/Dockerfile index b6c94d659..dd401c67c 100644 --- a/docker/php-dev/8.5-alpine/Dockerfile +++ b/docker/php-dev/8.5-alpine/Dockerfile @@ -16,7 +16,10 @@ RUN set -x \ make \ autoconf \ g++ \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && apk del -f --purge \ autoconf \ linux-headers \ diff --git a/docker/php-dev/8.5/Dockerfile b/docker/php-dev/8.5/Dockerfile index d8e74c867..deb49e2c4 100644 --- a/docker/php-dev/8.5/Dockerfile +++ b/docker/php-dev/8.5/Dockerfile @@ -14,7 +14,10 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/docker/php-nginx-dev/8.3-alpine/Dockerfile.jinja2 b/docker/php-nginx-dev/8.3-alpine/Dockerfile.jinja2 index 4ae7147e4..81e512b17 100644 --- a/docker/php-nginx-dev/8.3-alpine/Dockerfile.jinja2 +++ b/docker/php-nginx-dev/8.3-alpine/Dockerfile.jinja2 @@ -7,5 +7,5 @@ {{ docker.copy('conf/', '/opt/docker/') }} RUN set -x \ - {{ php.officialDevelopmentAlpine(version="8.2") }} \ + {{ php.officialDevelopmentAlpine(version="8.3") }} \ {{ provision.runBootstrap() }} diff --git a/docker/php-nginx-dev/8.4-alpine/Dockerfile.jinja2 b/docker/php-nginx-dev/8.4-alpine/Dockerfile.jinja2 index 4170b720f..0c59288ac 100644 --- a/docker/php-nginx-dev/8.4-alpine/Dockerfile.jinja2 +++ b/docker/php-nginx-dev/8.4-alpine/Dockerfile.jinja2 @@ -7,5 +7,5 @@ {{ docker.copy('conf/', '/opt/docker/') }} RUN set -x \ - {{ php.officialDevelopmentAlpine(version="8.2") }} \ + {{ php.officialDevelopmentAlpine(version="8.4") }} \ {{ provision.runBootstrap() }} diff --git a/docker/php-nginx-dev/8.5-alpine/Dockerfile b/docker/php-nginx-dev/8.5-alpine/Dockerfile index c10f3d35b..ba94eeecf 100644 --- a/docker/php-nginx-dev/8.5-alpine/Dockerfile +++ b/docker/php-nginx-dev/8.5-alpine/Dockerfile @@ -24,7 +24,10 @@ RUN set -x \ make \ autoconf \ g++ \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && apk del -f --purge \ autoconf \ linux-headers \ diff --git a/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 b/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 index 42ca5751a..b44bb2998 100644 --- a/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 +++ b/docker/php-nginx-dev/8.5-alpine/Dockerfile.jinja2 @@ -7,5 +7,5 @@ {{ docker.copy('conf/', '/opt/docker/') }} RUN set -x \ - {{ php.officialDevelopmentAlpine(version="8.2") }} \ + {{ php.officialDevelopmentAlpine(version="8.5") }} \ {{ provision.runBootstrap() }} diff --git a/docker/php-nginx-dev/8.5/Dockerfile b/docker/php-nginx-dev/8.5/Dockerfile index 622a121a2..103fe1f26 100644 --- a/docker/php-nginx-dev/8.5/Dockerfile +++ b/docker/php-nginx-dev/8.5/Dockerfile @@ -22,7 +22,10 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && pecl install xdebug \ + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/docker/php-official/5.6/Dockerfile b/docker/php-official/5.6/Dockerfile index 99db5a589..1f0338312 100644 --- a/docker/php-official/5.6/Dockerfile +++ b/docker/php-official/5.6/Dockerfile @@ -172,7 +172,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 5.x && pecl install apcu-4.0.11 \ diff --git a/docker/php-official/7.0/Dockerfile b/docker/php-official/7.0/Dockerfile index d606d24f4..c93cc525d 100644 --- a/docker/php-official/7.0/Dockerfile +++ b/docker/php-official/7.0/Dockerfile @@ -172,7 +172,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && pecl install apcu \ diff --git a/docker/php-official/7.1-alpine/Dockerfile b/docker/php-official/7.1-alpine/Dockerfile index 92d1e74ad..b048bdd55 100644 --- a/docker/php-official/7.1-alpine/Dockerfile +++ b/docker/php-official/7.1-alpine/Dockerfile @@ -177,7 +177,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && printf "no --disable-memcached-sasl\n" | pecl install memcached-3.0.4 \ diff --git a/docker/php-official/7.1/Dockerfile b/docker/php-official/7.1/Dockerfile index 6a071c5f1..228fe7191 100644 --- a/docker/php-official/7.1/Dockerfile +++ b/docker/php-official/7.1/Dockerfile @@ -172,7 +172,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && pecl install apcu \ diff --git a/docker/php-official/7.2-alpine/Dockerfile b/docker/php-official/7.2-alpine/Dockerfile index 6c0a8891e..9c576f6f8 100644 --- a/docker/php-official/7.2-alpine/Dockerfile +++ b/docker/php-official/7.2-alpine/Dockerfile @@ -177,7 +177,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/7.2/Dockerfile b/docker/php-official/7.2/Dockerfile index 1571618ad..0b0fb6f14 100644 --- a/docker/php-official/7.2/Dockerfile +++ b/docker/php-official/7.2/Dockerfile @@ -171,7 +171,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && pecl install apcu \ diff --git a/docker/php-official/7.3-alpine/Dockerfile b/docker/php-official/7.3-alpine/Dockerfile index 0db11ca34..8204398a6 100644 --- a/docker/php-official/7.3-alpine/Dockerfile +++ b/docker/php-official/7.3-alpine/Dockerfile @@ -177,7 +177,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/7.3/Dockerfile b/docker/php-official/7.3/Dockerfile index c3d168612..081ab7660 100644 --- a/docker/php-official/7.3/Dockerfile +++ b/docker/php-official/7.3/Dockerfile @@ -171,7 +171,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && pecl install apcu \ diff --git a/docker/php-official/7.4-alpine/Dockerfile b/docker/php-official/7.4-alpine/Dockerfile index 0c3537634..bc0458a51 100644 --- a/docker/php-official/7.4-alpine/Dockerfile +++ b/docker/php-official/7.4-alpine/Dockerfile @@ -182,7 +182,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/7.4/Dockerfile b/docker/php-official/7.4/Dockerfile index 032d57bc7..9db5049bc 100644 --- a/docker/php-official/7.4/Dockerfile +++ b/docker/php-official/7.4/Dockerfile @@ -145,6 +145,7 @@ RUN set -x \ && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-install \ bcmath \ + amqp \ bz2 \ calendar \ exif \ @@ -170,7 +171,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x && pecl install apcu \ diff --git a/docker/php-official/8.0-alpine/Dockerfile b/docker/php-official/8.0-alpine/Dockerfile index 32eaf9688..5667a398e 100644 --- a/docker/php-official/8.0-alpine/Dockerfile +++ b/docker/php-official/8.0-alpine/Dockerfile @@ -181,7 +181,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/8.0/Dockerfile b/docker/php-official/8.0/Dockerfile index 57ac73ccf..fd2e752ee 100644 --- a/docker/php-official/8.0/Dockerfile +++ b/docker/php-official/8.0/Dockerfile @@ -174,7 +174,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ && pecl install memcached \ && pecl install apcu \ diff --git a/docker/php-official/8.1-alpine/Dockerfile b/docker/php-official/8.1-alpine/Dockerfile index 0e37ad44a..a7af18f09 100644 --- a/docker/php-official/8.1-alpine/Dockerfile +++ b/docker/php-official/8.1-alpine/Dockerfile @@ -178,7 +178,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/8.1/Dockerfile b/docker/php-official/8.1/Dockerfile index 2ec1c0c33..d1c15bdd3 100644 --- a/docker/php-official/8.1/Dockerfile +++ b/docker/php-official/8.1/Dockerfile @@ -173,7 +173,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ && pecl install memcached \ && pecl install apcu \ diff --git a/docker/php-official/8.2-alpine/Dockerfile b/docker/php-official/8.2-alpine/Dockerfile index 9741d8784..8309a82fd 100644 --- a/docker/php-official/8.2-alpine/Dockerfile +++ b/docker/php-official/8.2-alpine/Dockerfile @@ -178,7 +178,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/8.2/Dockerfile b/docker/php-official/8.2/Dockerfile index a27f2ac23..23b67b6cf 100644 --- a/docker/php-official/8.2/Dockerfile +++ b/docker/php-official/8.2/Dockerfile @@ -173,7 +173,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ && pecl install memcached \ && pecl install apcu \ diff --git a/docker/php-official/8.3-alpine/Dockerfile b/docker/php-official/8.3-alpine/Dockerfile index a18417dcb..79aaf7bbb 100644 --- a/docker/php-official/8.3-alpine/Dockerfile +++ b/docker/php-official/8.3-alpine/Dockerfile @@ -178,7 +178,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/8.3/Dockerfile b/docker/php-official/8.3/Dockerfile index ee05344af..93c27f604 100644 --- a/docker/php-official/8.3/Dockerfile +++ b/docker/php-official/8.3/Dockerfile @@ -173,7 +173,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ && pecl install memcached \ && pecl install apcu \ diff --git a/docker/php-official/8.4-alpine/Dockerfile b/docker/php-official/8.4-alpine/Dockerfile index 2d4a8230d..9aa55af3d 100644 --- a/docker/php-official/8.4-alpine/Dockerfile +++ b/docker/php-official/8.4-alpine/Dockerfile @@ -176,7 +176,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master diff --git a/docker/php-official/8.4/Dockerfile b/docker/php-official/8.4/Dockerfile index a54004327..5f607f7a7 100644 --- a/docker/php-official/8.4/Dockerfile +++ b/docker/php-official/8.4/Dockerfile @@ -171,7 +171,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ opcache \ && pecl install memcached \ && pecl install apcu \ diff --git a/docker/php-official/8.5-alpine/Dockerfile b/docker/php-official/8.5-alpine/Dockerfile index b4b775622..77c16ed38 100644 --- a/docker/php-official/8.5-alpine/Dockerfile +++ b/docker/php-official/8.5-alpine/Dockerfile @@ -22,7 +22,7 @@ ENV APPLICATION_USER=application \ APPLICATION_PATH=/app \ APPLICATION_UID=1000 \ APPLICATION_GID=1000 -ENV PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" +ENV PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" ENV COMPOSER_VERSION="2" @@ -158,7 +158,6 @@ RUN set -x \ gmp \ ffi \ imagick \ - amqp \ intl \ gettext \ ldap \ @@ -176,8 +175,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ - opcache \ # Install extensions for PHP 7.x # Memcached for 7.3 can currently only be built from master && MEMCACHED="`mktemp -d`" \ diff --git a/docker/php-official/8.5/Dockerfile b/docker/php-official/8.5/Dockerfile index 97fd3e441..5a407cbcd 100644 --- a/docker/php-official/8.5/Dockerfile +++ b/docker/php-official/8.5/Dockerfile @@ -38,7 +38,7 @@ RUN set -x \ && apt-update \ && /usr/local/bin/generate-dockerimage-info \ # Enable non-free - && sed -ri "s/(deb.*\/debian $(docker-image-info dist-codename) main)/\1 contrib non-free /" -- /etc/apt/sources.list.d/debian.sources \ + && sed -ri "s/(deb.*\/debian $(docker-image-info dist-codename) main)/\1 contrib non-free /" -- /etc/apt/sources.list.d/debian.sources \ && apt-update \ # System update && /usr/local/bin/apt-upgrade \ @@ -146,7 +146,6 @@ RUN set -x \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ && docker-php-ext-install \ bcmath \ - amqp \ imagick \ ffi \ bz2 \ @@ -171,8 +170,6 @@ RUN set -x \ xsl \ zip \ gd \ - gettext \ - opcache \ && pecl install memcached \ && pecl install apcu \ && pecl install excimer \ diff --git a/template/Dockerfile/images/php.jinja2 b/template/Dockerfile/images/php.jinja2 index 4d86bfed9..3079047af 100644 --- a/template/Dockerfile/images/php.jinja2 +++ b/template/Dockerfile/images/php.jinja2 @@ -83,8 +83,10 @@ {%- endif %} && docker-php-ext-install \ bcmath \ -{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} +{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} amqp \ +{%- endif %} +{%- if version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} imagick \ ffi \ {%- endif %} @@ -125,8 +127,9 @@ xsl \ zip \ gd \ - gettext \ +{%- if version != '8.5' %} opcache \ +{%- endif %} {%- if version|int == 5 %} # Install extensions for PHP 5.x && pecl install apcu-4.0.11 \ @@ -294,6 +297,8 @@ {%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} ffi \ imagick \ +{%- endif %} +{%- if version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} amqp \ {%- endif %} intl \ @@ -325,8 +330,9 @@ xsl \ zip \ gd \ - gettext \ +{%- if version != '8.5' %} opcache \ +{%- endif %} # Install extensions for PHP 7.x {%- if version == '7.3' or version == '7.4' or version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} # Memcached for 7.3 can currently only be built from master @@ -428,7 +434,12 @@ && apt-install tideways-php tideways-daemon \ {%- if version|int == 5 %} && pecl install xdebug-2.5.5 \ - {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} + {%- elif version == '8.5' %} + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ + {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} && pecl install xdebug \ {%- elif version == '7.0' or version == '7.1' %} && pecl install xdebug-2.8.1 \ @@ -454,6 +465,11 @@ && pecl install xdebug-2.5.5 \ {%- elif version == '7.0' or version == '7.1' %} && pecl install xdebug-2.8.1 \ + {%- elif version == '8.5' %} + && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ + && chmod +x /usr/local/bin/pie \ + && pie install xdebug/xdebug:^3.5.0@alpha \ + && rm -f /usr/local/bin/pie \ {%- elif version == '7.4' %} && pecl install xdebug-3.1.6 \ {%- else %} From 97d91e516ffb71d558408394b5573a918c18dfbf Mon Sep 17 00:00:00 2001 From: Matthias Vogel Date: Tue, 9 Dec 2025 07:35:48 +0100 Subject: [PATCH 3/3] =?UTF-8?q?=E2=8F=AA=EF=B8=8F=20rewert=20to=20using=20?= =?UTF-8?q?pecl=20for=20xdebug=20install?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/php-apache-dev/8.5/Dockerfile | 5 +---- docker/php-dev/8.5/Dockerfile | 5 +---- docker/php-nginx-dev/8.5/Dockerfile | 5 +---- template/Dockerfile/images/php.jinja2 | 7 +------ 4 files changed, 4 insertions(+), 18 deletions(-) diff --git a/docker/php-apache-dev/8.5/Dockerfile b/docker/php-apache-dev/8.5/Dockerfile index 2ec49830d..6dd17f1ab 100644 --- a/docker/php-apache-dev/8.5/Dockerfile +++ b/docker/php-apache-dev/8.5/Dockerfile @@ -22,10 +22,7 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ - && chmod +x /usr/local/bin/pie \ - && pie install xdebug/xdebug:^3.5.0@alpha \ - && rm -f /usr/local/bin/pie \ + && pecl install xdebug \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/docker/php-dev/8.5/Dockerfile b/docker/php-dev/8.5/Dockerfile index deb49e2c4..d8e74c867 100644 --- a/docker/php-dev/8.5/Dockerfile +++ b/docker/php-dev/8.5/Dockerfile @@ -14,10 +14,7 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ - && chmod +x /usr/local/bin/pie \ - && pie install xdebug/xdebug:^3.5.0@alpha \ - && rm -f /usr/local/bin/pie \ + && pecl install xdebug \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/docker/php-nginx-dev/8.5/Dockerfile b/docker/php-nginx-dev/8.5/Dockerfile index 103fe1f26..622a121a2 100644 --- a/docker/php-nginx-dev/8.5/Dockerfile +++ b/docker/php-nginx-dev/8.5/Dockerfile @@ -22,10 +22,7 @@ RUN set -x \ && echo 'deb https://packages.tideways.com/apt-packages-main any-version main' | tee /etc/apt/sources.list.d/tideways.list \ && wget -qO - https://packages.tideways.com/key.gpg | apt-key add - \ && apt-install tideways-php tideways-daemon \ - && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ - && chmod +x /usr/local/bin/pie \ - && pie install xdebug/xdebug:^3.5.0@alpha \ - && rm -f /usr/local/bin/pie \ + && pecl install xdebug \ && docker-php-ext-enable xdebug \ # Enable php development services && docker-service enable syslog \ diff --git a/template/Dockerfile/images/php.jinja2 b/template/Dockerfile/images/php.jinja2 index 3079047af..f4f57bb32 100644 --- a/template/Dockerfile/images/php.jinja2 +++ b/template/Dockerfile/images/php.jinja2 @@ -434,12 +434,7 @@ && apt-install tideways-php tideways-daemon \ {%- if version|int == 5 %} && pecl install xdebug-2.5.5 \ - {%- elif version == '8.5' %} - && wget https://github.com/php/pie/releases/download/1.3.1/pie.phar -O /usr/local/bin/pie \ - && chmod +x /usr/local/bin/pie \ - && pie install xdebug/xdebug:^3.5.0@alpha \ - && rm -f /usr/local/bin/pie \ - {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' %} + {%- elif version == '8.0' or version == '8.1' or version == '8.2' or version == '8.3' or version == '8.4' or version == '8.5' %} && pecl install xdebug \ {%- elif version == '7.0' or version == '7.1' %} && pecl install xdebug-2.8.1 \