From 0d2e2f557181438621a7ec51c4251903d30ed903 Mon Sep 17 00:00:00 2001 From: Alexander Menk Date: Sat, 15 Jun 2024 13:39:03 +0200 Subject: [PATCH 1/5] Fix: ignore and add symlink to assets during build --- .dockerignore | 1 + Dockerfile | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.dockerignore b/.dockerignore index 0ef470f..d87a4e6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,7 @@ Dockerfile vendor/ .git public/build/ +public/assets/ storage/app/repositories/* storage/framework/*/* storage/logs/* diff --git a/Dockerfile b/Dockerfile index 349c533..82feb30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,3 +38,5 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer RUN composer install --no-dev RUN npm install RUN npm run build +RUN mkdir -p public/assets \ + ln -s storage/app/repositories/opg-data-ethiopia/places public/assets/ethiopia From 40f58ad992259d2f482eac33c95d6e843d7d94e6 Mon Sep 17 00:00:00 2001 From: Alexander Menk Date: Sat, 15 Jun 2024 14:48:33 +0200 Subject: [PATCH 2/5] Use Wolfi-PHP / WIP: Problem with error logs * Errors are not displayed, try lots with the STDERR stream, but don't get output --- .dockerignore | 6 ++-- Dockerfile | 88 +++++++++++++++++++++++++++++++--------------- README.md | 4 +++ composer.json | 3 ++ composer.lock | 5 ++- docker-compose.yml | 1 - 6 files changed, 73 insertions(+), 34 deletions(-) diff --git a/.dockerignore b/.dockerignore index d87a4e6..d8df57b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,6 +3,6 @@ vendor/ .git public/build/ public/assets/ -storage/app/repositories/* -storage/framework/*/* -storage/logs/* +storage/app/repositories/** +storage/framework/**/* +storage/logs/** diff --git a/Dockerfile b/Dockerfile index 82feb30..0fbcb28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,42 +1,72 @@ -FROM composer:2.6.6 as composer +FROM composer:latest as composer -FROM php:8.1-apache-bookworm +COPY . /var/www/html +RUN cd /var/www/html && composer install --no-dev --no-scripts + +FROM cgr.dev/chainguard/wolfi-base:latest + +ARG PHP_VERSION=8.1 + +RUN <\nAllowOverride all\n\n Date: Sat, 6 Jul 2024 16:27:27 +0200 Subject: [PATCH 3/5] WIP: Fix error logging problem, fix build Todo: Build assets --- .dockerignore | 1 - Dockerfile | 10 +++- docker-test/Dockerfile | 9 ++++ docker/rootfs/etc/Procfile | 2 + docker/rootfs/etc/nginx/nginx.conf | 46 +++++++++++++++++++ docker/rootfs/etc/php/conf.d/default.ini | 11 +++++ .../etc/php/php-fpm.d/zz-b-default.conf | 16 +++++++ docker/rootfs/var/www/html/public/index.php | 2 + 8 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 docker-test/Dockerfile create mode 100644 docker/rootfs/etc/Procfile create mode 100644 docker/rootfs/etc/nginx/nginx.conf create mode 100644 docker/rootfs/etc/php/conf.d/default.ini create mode 100644 docker/rootfs/etc/php/php-fpm.d/zz-b-default.conf create mode 100644 docker/rootfs/var/www/html/public/index.php diff --git a/.dockerignore b/.dockerignore index d8df57b..b41dc08 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,4 +5,3 @@ public/build/ public/assets/ storage/app/repositories/** storage/framework/**/* -storage/logs/** diff --git a/Dockerfile b/Dockerfile index 0fbcb28..43b1bd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,19 +54,25 @@ EOF EXPOSE 8000 -RUN apk add --no-cache zip php-8.1 php-8.1-intl php-8.1-gd php-8.1-cgi -RUN apk add lighttpd +RUN apk add --no-cache zip php-8.1 php-8.1-intl php-8.1-gd php-8.1-cgi php-8.1-phar php-8.1-iconv php-8.1-mbstring php-8.1-openssl php-8.1-dom #ENV LOG_CHANNEL=stderr COPY . /var/www/html + +RUN mkdir -p storage/framework/cache/data storage/framework/sessions storage/framework/views RUN chown -R www-data:www-data /var/www/html/storage || true RUN chown -R www-data:www-data /var/www/html/bootstrap/cache || true COPY --from=composer /var/www/html/vendor /var/www/html/vendor +COPY --from=composer /usr/bin/composer /usr/bin/composer + +RUN composer dump-autoload + # RUN npm install # RUN npm run build # RUN mkdir -p public/assets \ # ln -s storage/app/repositories/opg-data-ethiopia/places public/assets/ethiopia CMD ["/usr/bin/hivemind", "/etc/Procfile"] +# CMD ["php", "artisan"] diff --git a/docker-test/Dockerfile b/docker-test/Dockerfile new file mode 100644 index 0000000..e15cab7 --- /dev/null +++ b/docker-test/Dockerfile @@ -0,0 +1,9 @@ +FROM cgr.dev/chainguard/wolfi-base:latest + +WORKDIR /var/www/html + +COPY . . + +RUN apk add --no-cache php-8.1 + +CMD [ "php", "./test_error.php" ] diff --git a/docker/rootfs/etc/Procfile b/docker/rootfs/etc/Procfile new file mode 100644 index 0000000..c1fb286 --- /dev/null +++ b/docker/rootfs/etc/Procfile @@ -0,0 +1,2 @@ +nginx: /usr/sbin/nginx +php-fpm: /usr/sbin/php-fpm diff --git a/docker/rootfs/etc/nginx/nginx.conf b/docker/rootfs/etc/nginx/nginx.conf new file mode 100644 index 0000000..33dea5d --- /dev/null +++ b/docker/rootfs/etc/nginx/nginx.conf @@ -0,0 +1,46 @@ +worker_processes auto; +pid /tmp/nginx.pid; +daemon off; +user www-data; +error_log /dev/fd/2 error; + +events { + worker_connections 1024; +} + +http { + client_body_temp_path /tmp/client_body_temp; + proxy_temp_path /tmp/proxy_temp; + fastcgi_temp_path /tmp/fastcgi_temp; + uwsgi_temp_path /tmp/uwsgi_temp; + scgi_temp_path /tmp/scgi_temp; + access_log /dev/fd/1; + + server { + listen 80; + server_name localhost; + + root /var/www/html/public; + index index.php; + include /etc/nginx/mime.types; + + location / { + try_files $uri /index.php$is_args$args; + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + include fastcgi.conf; + fastcgi_buffers 8 16k; + fastcgi_buffer_size 32k; + fastcgi_read_timeout 300s; + client_body_buffer_size 128k; + fastcgi_pass unix:/tmp/php-fpm.sock; + } + + gzip on; + gzip_min_length 1000; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + } +} diff --git a/docker/rootfs/etc/php/conf.d/default.ini b/docker/rootfs/etc/php/conf.d/default.ini new file mode 100644 index 0000000..ba8fdf4 --- /dev/null +++ b/docker/rootfs/etc/php/conf.d/default.ini @@ -0,0 +1,11 @@ +upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE} +post_max_size = ${PHP_POST_MAX_SIZE} +max_execution_time = ${PHP_MAX_EXECUTION_TIME} +memory_limit = ${PHP_MEMORY_LIMIT} + +session.save_handler = ${PHP_SESSION_HANDLER} +session.save_path = ${PHP_SESSION_SAVE_PATH} +session.gc_probability = ${PHP_SESSION_GC_PROBABILITY} + +error_log = /dev/fd/2 +log_errors = On diff --git a/docker/rootfs/etc/php/php-fpm.d/zz-b-default.conf b/docker/rootfs/etc/php/php-fpm.d/zz-b-default.conf new file mode 100644 index 0000000..fd5cb5d --- /dev/null +++ b/docker/rootfs/etc/php/php-fpm.d/zz-b-default.conf @@ -0,0 +1,16 @@ +[www] +user = ${PHP_FPM_USER} +group = ${PHP_FPM_GROUP} +access.log = ${PHP_FPM_ACCESS_LOG} +listen = ${PHP_FPM_LISTEN} +listen.owner = ${PHP_FPM_USER} +listen.group = ${PHP_FPM_GROUP} +pm = ${PHP_FPM_PM} +pm.max_children = ${PHP_FPM_PM_MAX_CHILDREN} +pm.start_servers = ${PHP_FPM_PM_START_SERVERS} +pm.min_spare_servers = ${PHP_FPM_PM_MIN_SPARE_SERVERS} +pm.max_spare_servers = ${PHP_FPM_PM_MAX_SPARE_SERVERS} +pm.max_requests = ${PHP_FPM_PM_MAX_REQUESTS} + +[global] +error_log = /proc/self/fd/2 diff --git a/docker/rootfs/var/www/html/public/index.php b/docker/rootfs/var/www/html/public/index.php new file mode 100644 index 0000000..61ace19 --- /dev/null +++ b/docker/rootfs/var/www/html/public/index.php @@ -0,0 +1,2 @@ + Date: Sat, 6 Jul 2024 16:40:48 +0200 Subject: [PATCH 4/5] Add node build --- Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Dockerfile b/Dockerfile index 43b1bd0..9ddc86f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,14 @@ FROM composer:latest as composer COPY . /var/www/html RUN cd /var/www/html && composer install --no-dev --no-scripts + +FROM node:22 as node + +COPY . /var/www/html +WORKDIR /var/www/html +RUN npm install && npm run build + + FROM cgr.dev/chainguard/wolfi-base:latest ARG PHP_VERSION=8.1 @@ -66,6 +74,7 @@ RUN chown -R www-data:www-data /var/www/html/bootstrap/cache || true COPY --from=composer /var/www/html/vendor /var/www/html/vendor COPY --from=composer /usr/bin/composer /usr/bin/composer +COPY --from=node /var/www/html/public/build /var/www/html/public/build RUN composer dump-autoload From c2c93140af2355288a32e2d1f146421271844ed9 Mon Sep 17 00:00:00 2001 From: Alexander Menk Date: Sat, 6 Jul 2024 16:40:56 +0200 Subject: [PATCH 5/5] Mount public assets --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index d55659d..d523c86 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: - ASSET_URL=http://localhost:3000/ volumes: - ./storage/app/repositories/opg-data-ethiopia:/var/www/html/storage/app/repositories/opg-data-ethiopia/ + - ./storage/app/repositories/opg-data-ethiopia/places:/var/www/html/public/assets/ethiopia web: image: osmapp ports: