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..37e099787
--- /dev/null
+++ b/docker/php-apache-dev/8.5-alpine/Dockerfile
@@ -0,0 +1,41 @@
+#+++++++++++++++++++++++++++++++++++++++
+# 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++ \
+ && 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 \
+ 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..dd401c67c
--- /dev/null
+++ b/docker/php-dev/8.5-alpine/Dockerfile
@@ -0,0 +1,33 @@
+#+++++++++++++++++++++++++++++++++++++++
+# 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++ \
+ && 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 \
+ 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.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
new file mode 100644
index 000000000..ba94eeecf
--- /dev/null
+++ b/docker/php-nginx-dev/8.5-alpine/Dockerfile
@@ -0,0 +1,41 @@
+#+++++++++++++++++++++++++++++++++++++++
+# 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++ \
+ && 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 \
+ 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..b44bb2998
--- /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.5") }} \
+ {{ 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..1f0338312 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 \
@@ -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 ee67b29db..c93cc525d 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 \
@@ -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 2b555bf4c..b048bdd55 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 \
@@ -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 0670dda63..228fe7191 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 \
@@ -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 19d9e9799..9c576f6f8 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 \
@@ -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 065378b3b..0b0fb6f14 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 \
@@ -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 a8785a913..8204398a6 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 \
@@ -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 dfb574912..081ab7660 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 \
@@ -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 aa250416b..bc0458a51 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 \
@@ -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 7df60f658..9db5049bc 100644
--- a/docker/php-official/7.4/Dockerfile
+++ b/docker/php-official/7.4/Dockerfile
@@ -142,9 +142,10 @@ 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 \
+ 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 452f79a7d..5667a398e 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 \
@@ -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 b22800529..fd2e752ee 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 \
@@ -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 942ed80a0..a7af18f09 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 \
@@ -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 7a2822bc7..d1c15bdd3 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 \
@@ -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 248c74d63..8309a82fd 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 \
@@ -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
@@ -230,7 +229,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..23b67b6cf 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 \
@@ -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 bd6d925ed..79aaf7bbb 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 \
@@ -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
@@ -230,7 +229,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..93c27f604 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 \
@@ -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 f79d3d0f6..9aa55af3d 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 \
@@ -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
@@ -228,7 +227,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..5f607f7a7 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 \
@@ -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
new file mode 100644
index 000000000..77c16ed38
--- /dev/null
+++ b/docker/php-official/8.5-alpine/Dockerfile
@@ -0,0 +1,246 @@
+#+++++++++++++++++++++++++++++++++++++++
+# 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 \
+ intl \
+ gettext \
+ ldap \
+ mysqli \
+ pcntl \
+ pdo_mysql \
+ pdo_pgsql \
+ pgsql \
+ soap \
+ sockets \
+ sysvmsg \
+ sysvsem \
+ sysvshm \
+ shmop \
+ xsl \
+ zip \
+ gd \
+ # 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..5a407cbcd
--- /dev/null
+++ b/docker/php-official/8.5/Dockerfile
@@ -0,0 +1,224 @@
+#+++++++++++++++++++++++++++++++++++++++
+# 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 \
+ 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 \
+ && 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..f4f57bb32 100644
--- a/template/Dockerfile/images/php.jinja2
+++ b/template/Dockerfile/images/php.jinja2
@@ -65,26 +65,28 @@
&& 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 == '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 %}
@@ -100,10 +102,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,21 +114,22 @@
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 \
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 \
@@ -139,7 +142,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 +251,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 +273,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 +284,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,19 +294,21 @@
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 \
+{%- 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 \
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,23 +317,24 @@
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 \
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' %}
+ {%- 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 +345,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 +408,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 +434,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 \
@@ -446,6 +460,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 %}