From 5156aa1337b8d5c2169833c2a3ae10bcede4593d Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Thu, 5 May 2022 11:29:55 +0200 Subject: [PATCH] fpm and nginx working. --- .dockerignore | 1 + build/fpm/Dockerfile | 26 ++++++++++---- .../configuration/fpm/www_01_development.conf | 2 +- build/nginx/Dockerfile | 28 +++++++++++++++ .../configuration}/nginx-default-dev.conf | 4 +-- .../nginx/configuration}/nginx-default.conf | 5 +-- .../nginx/configuration}/nginx.conf | 14 ++++---- docker-compose.yml | 35 ++++++++++++++++--- 8 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 .dockerignore create mode 100644 build/nginx/Dockerfile rename {metager/config => build/nginx/configuration}/nginx-default-dev.conf (91%) rename {metager/config => build/nginx/configuration}/nginx-default.conf (87%) rename {metager/config => build/nginx/configuration}/nginx.conf (66%) diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..191381ee7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git \ No newline at end of file diff --git a/build/fpm/Dockerfile b/build/fpm/Dockerfile index 8b404cf3e..fd035e3a0 100644 --- a/build/fpm/Dockerfile +++ b/build/fpm/Dockerfile @@ -1,7 +1,7 @@ -FROM php:8.1-fpm as composer +FROM php:7.4-fpm as composer # Add Composer installation to image -ADD installcomposer.sh /usr/bin/installcomposer +ADD build/fpm/installcomposer.sh /usr/bin/installcomposer RUN /usr/bin/installcomposer && \ rm /usr/bin/installcomposer @@ -27,16 +27,30 @@ RUN apt update && apt install -y \ docker-php-ext-enable redis && \ docker-php-ext-enable --ini-name=xdebug.ini xdebug +# Add working dir for the code base +RUN mkdir -p /metager/metager_app && \ + chown -R metager:metager /metager +WORKDIR /metager/metager_app + +# Add composer Cache Directory +RUN mkdir /composer_cache && \ + chown metager:metager /composer_cache +VOLUME [ "/composer_cache" ] +# Add composer vendor Directory +RUN mkdir -p /metager/metager_app/vendor && \ + chown metager:metager /metager/metager_app/vendor +VOLUME [ "metager/metager_app/vendor" ] + # Add General Customizations to php.ini -ADD configuration/php/custom.ini $PHP_INI_DIR/conf.d/custom.ini +ADD build/fpm/configuration/php/custom.ini $PHP_INI_DIR/conf.d/custom.ini # Configure PHP (use development configuration as base) RUN mv $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini # Add Development Customizations -ADD configuration/php/development.ini $PHP_INI_DIR/conf.d/development.ini +ADD build/fpm/configuration/php/development.ini $PHP_INI_DIR/conf.d/development.ini # Configure FPM -ADD configuration/fpm/www_01_development.conf $PHP_INI_DIR/../php-fpm.d/www_01.conf +ADD build/fpm/configuration/fpm/www_01_development.conf $PHP_INI_DIR/../php-fpm.d/www_01.conf USER metager:metager ENTRYPOINT [ "/usr/local/sbin/php-fpm" ] @@ -54,6 +68,6 @@ RUN mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini # Remove development php.ini RUN rm $PHP_INI_DIR/conf.d/development.ini # Add production php.ini -ADD configuration/php/production.ini $PHP_INI_DIR/conf.d/production.ini +ADD build/fpm/configuration/php/production.ini $PHP_INI_DIR/conf.d/production.ini USER metager:metager \ No newline at end of file diff --git a/build/fpm/configuration/fpm/www_01_development.conf b/build/fpm/configuration/fpm/www_01_development.conf index 546659f14..6acb40d35 100644 --- a/build/fpm/configuration/fpm/www_01_development.conf +++ b/build/fpm/configuration/fpm/www_01_development.conf @@ -1,4 +1,4 @@ ; This File holds custom www pool configurations for development deployments [www] ; Do not limit request length -request_terminate_timeout = 0 \ No newline at end of file +request_terminate_timeout = 0 diff --git a/build/nginx/Dockerfile b/build/nginx/Dockerfile new file mode 100644 index 000000000..8068cd825 --- /dev/null +++ b/build/nginx/Dockerfile @@ -0,0 +1,28 @@ +FROM nginx:1.21.6 as setup + +ARG UID=1000 +ARG GID=1000 +ARG USER_HOME=/metager + +# Create User +RUN groupadd -g ${GID} metager && \ + useradd -b $USER_HOME -g ${GID} -u ${UID} -M -s /bin/bash metager && \ + mkdir -p $USER_HOME && \ + mkdir ${USER_HOME}/nginx_tmp && \ + mkdir ${USER_HOME}/metager_app && \ + chown -R ${UID}:${GID} $USER_HOME + +WORKDIR ${USER_HOME}/metager_app + +FROM setup as development + +ADD build/nginx/configuration/nginx.conf /etc/nginx/nginx.conf +ADD build/nginx/configuration/nginx-default-dev.conf /etc/nginx/conf.d/default.conf + +USER metager:metager + +FROM development as production + +USER root:root +ADD build/nginx/configuration/nginx-default.conf /etc/nginx/conf.d/default.conf +USER metager:metager \ No newline at end of file diff --git a/metager/config/nginx-default-dev.conf b/build/nginx/configuration/nginx-default-dev.conf similarity index 91% rename from metager/config/nginx-default-dev.conf rename to build/nginx/configuration/nginx-default-dev.conf index 7baa09880..9cbb21e1e 100644 --- a/metager/config/nginx-default-dev.conf +++ b/build/nginx/configuration/nginx-default-dev.conf @@ -1,7 +1,7 @@ server { listen 8080; server_name localhost; - root /html/public; + root /metager/metager_app/public; index index.php index.html index.htm; client_max_body_size 30M; @@ -13,7 +13,7 @@ server { location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass phpfpm:9000; + fastcgi_pass fpm:9000; fastcgi_index index.php; fastcgi_read_timeout 900; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; diff --git a/metager/config/nginx-default.conf b/build/nginx/configuration/nginx-default.conf similarity index 87% rename from metager/config/nginx-default.conf rename to build/nginx/configuration/nginx-default.conf index b676c8da0..3f027d68c 100644 --- a/metager/config/nginx-default.conf +++ b/build/nginx/configuration/nginx-default.conf @@ -1,9 +1,10 @@ server { listen 8080; server_name localhost; - root /html/public; + root /metager/nginx_app/public; index index.php index.html index.htm; + server_tokens off; client_max_body_size 30M; location / { @@ -13,7 +14,7 @@ server { location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass phpfpm:9000; + fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; diff --git a/metager/config/nginx.conf b/build/nginx/configuration/nginx.conf similarity index 66% rename from metager/config/nginx.conf rename to build/nginx/configuration/nginx.conf index 3f8cb5d05..cdffe4bb1 100644 --- a/metager/config/nginx.conf +++ b/build/nginx/configuration/nginx.conf @@ -1,10 +1,7 @@ -#user www-data; worker_processes auto; error_log /dev/stdout warn; -# pid /run/nginx.pid; - -daemon off; +pid /metager/nginx_tmp/nginx.pid; events { worker_connections 1024; @@ -12,6 +9,13 @@ events { http { + client_body_temp_path /metager/nginx_tmp/client_temp; + proxy_temp_path /metager/nginx_tmp/proxy_temp_path; + fastcgi_temp_path /metager/nginx_tmp/fastcgi_temp; + uwsgi_temp_path /metager/nginx_tmp/uwsgi_temp; + scgi_temp_path /metager/nginx_tmp/scgi_temp; + + include /etc/nginx/mime.types; default_type application/octet-stream; @@ -22,8 +26,6 @@ http { access_log /dev/null main; sendfile on; - #tcp_nopush on; - client_max_body_size 30M; keepalive_timeout 65; diff --git a/docker-compose.yml b/docker-compose.yml index 332cbd5fe..c432880fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,38 @@ version: "3" # Volumes - +volumes: + vendor: {} + composer_cache: {} # Services services: fpm: build: - context: build/fpm - dockerfile: Dockerfile - target: ${APP_ENV} \ No newline at end of file + &fpm_build + context: ./ + dockerfile: build/fpm/Dockerfile + target: ${APP_ENV} + volumes: + - ./metager:/metager/metager_app + - vendor:/metager/metager_app/vendor + composer: + build: + <<: *fpm_build + entrypoint: /usr/bin/composer + command: install + environment: + - COMPOSER_HOME=/composer_cache + volumes: + - ./metager:/metager/metager_app + - vendor:/metager/metager_app/vendor + - composer_cache:/composer_cache + nginx: + build: + context: ./ + dockerfile: build/nginx/Dockerfile + target: ${APP_ENV} + volumes: + - ./metager/public:/metager/metager_app/public + ports: + - 8080:8080 + \ No newline at end of file -- GitLab