From d024a178b89cd5efd36dc2295e0ba8baa9c10683 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Sun, 14 Jan 2024 14:53:05 +0100 Subject: [PATCH 1/2] chore: set www-data as user for supervisor programs --- README.md | 7 ++- src/{conf/nginx => }/default.conf | 0 src/docker/7.2/Dockerfile | 26 +++++++++-- src/docker/7.3/Dockerfile | 27 ++++++++++-- src/docker/7.4/Dockerfile | 26 +++++++++-- src/docker/8.0/Dockerfile | 27 ++++++++++-- src/docker/8.1/Dockerfile | 29 +++++++++--- src/docker/8.2/Dockerfile | 27 +++++++++--- src/docker/8.3/Dockerfile | 26 +++++++++-- src/entrypoint.sh | 29 +----------- src/nginx.conf | 73 +++++++++++++++++++++++++++++++ src/supervisor/supervisord.conf | 19 ++++---- 12 files changed, 249 insertions(+), 67 deletions(-) rename src/{conf/nginx => }/default.conf (100%) create mode 100644 src/nginx.conf diff --git a/README.md b/README.md index 6b5927e..55006b4 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,8 @@ services: app: image: jkaninda/nginx-php-fpm:8.2 container_name: my-app - restart: unless-stopped + restart: unless-stopped + user: www-data # Optional - for production usage volumes: #Project root - ./:/var/www/html @@ -115,10 +116,12 @@ WORKDIR /var/www/html # Custom cache invalidation / optional #ARG CACHEBUST=1 -# Run composer install / Optional +# composer install / Optional #RUN composer install # Fix permissions RUN chown -R www-data:www-data /var/www/html + +USER www-data ``` diff --git a/src/conf/nginx/default.conf b/src/default.conf similarity index 100% rename from src/conf/nginx/default.conf rename to src/default.conf diff --git a/src/docker/7.2/Dockerfile b/src/docker/7.2/Dockerfile index 66793a8..6e525fa 100644 --- a/src/docker/7.2/Dockerfile +++ b/src/docker/7.2/Dockerfile @@ -69,7 +69,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -78,16 +77,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + + +#USER ${USER_NAME} EXPOSE 80 -CMD [ "entrypoint" ] +ENTRYPOINT ["entrypoint.sh"] \ No newline at end of file diff --git a/src/docker/7.3/Dockerfile b/src/docker/7.3/Dockerfile index cc311eb..dbed050 100644 --- a/src/docker/7.3/Dockerfile +++ b/src/docker/7.3/Dockerfile @@ -69,7 +69,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ @@ -79,15 +78,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf + +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + + +#USER ${USER_NAME} EXPOSE 80 -CMD [ "entrypoint" ] +ENTRYPOINT ["entrypoint.sh"] \ No newline at end of file diff --git a/src/docker/7.4/Dockerfile b/src/docker/7.4/Dockerfile index 63973dd..79268cc 100644 --- a/src/docker/7.4/Dockerfile +++ b/src/docker/7.4/Dockerfile @@ -69,7 +69,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -78,16 +77,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + + +#USER ${USER_NAME} EXPOSE 80 -CMD [ "entrypoint" ] +ENTRYPOINT ["entrypoint.sh"] \ No newline at end of file diff --git a/src/docker/8.0/Dockerfile b/src/docker/8.0/Dockerfile index bf46bde..d18b0d0 100644 --- a/src/docker/8.0/Dockerfile +++ b/src/docker/8.0/Dockerfile @@ -81,7 +81,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -90,15 +89,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf + +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + + +#USER ${USER_NAME} EXPOSE 80 -CMD [ "entrypoint" ] +ENTRYPOINT ["entrypoint.sh"] \ No newline at end of file diff --git a/src/docker/8.1/Dockerfile b/src/docker/8.1/Dockerfile index f1012c7..24e88c3 100644 --- a/src/docker/8.1/Dockerfile +++ b/src/docker/8.1/Dockerfile @@ -82,7 +82,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -91,15 +90,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default + +RUN rm -rf /etc/nginx/nginx.conf + +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ -EXPOSE 80 -CMD [ "entrypoint" ] + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + +#USER ${USER_NAME} +EXPOSE 80 +ENTRYPOINT ["entrypoint.sh"] diff --git a/src/docker/8.2/Dockerfile b/src/docker/8.2/Dockerfile index c1c978e..99efdf4 100644 --- a/src/docker/8.2/Dockerfile +++ b/src/docker/8.2/Dockerfile @@ -82,7 +82,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -91,17 +90,35 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ -EXPOSE 80 -CMD [ "entrypoint" ] + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + +#USER ${USER_NAME} +EXPOSE 80 +ENTRYPOINT ["entrypoint.sh"] \ No newline at end of file diff --git a/src/docker/8.3/Dockerfile b/src/docker/8.3/Dockerfile index 87bad94..051f097 100644 --- a/src/docker/8.3/Dockerfile +++ b/src/docker/8.3/Dockerfile @@ -82,7 +82,6 @@ RUN rm -Rf /var/www/* && \ mkdir -p /var/www/html ADD src/index.php $WORKDIR/index.php -ADD src/conf/nginx/default.conf /etc/nginx/sites-available/default ADD src/php.ini $PHP_INI_DIR/conf.d/ ADD src/opcache.ini $PHP_INI_DIR/conf.d/ ADD src/supervisor/supervisord.conf /etc/supervisor/supervisord.conf @@ -91,18 +90,37 @@ COPY src/entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh RUN ln -s /usr/local/bin/entrypoint.sh / -ENTRYPOINT ["entrypoint.sh"] +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/sites-enabled/default +RUN rm -rf /etc/nginx/sites-available/default +RUN rm -rf /etc/nginx/nginx.conf + +COPY src/nginx.conf /etc/nginx/nginx.conf +COPY src/default.conf /etc/nginx/conf.d/ RUN usermod -u ${USER_ID} ${USER_NAME} RUN groupmod -g ${USER_ID} ${GROUP_NAME} + +RUN mkdir -p /var/log/supervisor +RUN mkdir -p /var/log/nginx +RUN mkdir -p /var/cache/nginx + RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \ chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \ chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \ chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/ && \ - chown -R ${USER_NAME}:${GROUP_NAME} /etc/nginx/sites-available/ + touch /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/cache/nginx && \ + chown -R $USER_NAME:$USER_NAME /var/lib/nginx/ && \ + chown -R $USER_NAME:$USER_NAME /var/run/nginx.pid && \ + chown -R $USER_NAME:$USER_NAME /var/log/supervisor && \ + chown -R $USER_NAME:$USER_NAME /etc/nginx/conf.d/ && \ + chown -R ${USER_NAME}:${GROUP_NAME} /tmp + + #USER ${USER_NAME} EXPOSE 80 -CMD [ "entrypoint" ] +ENTRYPOINT ["entrypoint.sh"] diff --git a/src/entrypoint.sh b/src/entrypoint.sh index b915a32..aaabcaf 100644 --- a/src/entrypoint.sh +++ b/src/entrypoint.sh @@ -54,23 +54,8 @@ else info "artisan file not found" fi -# Enable custom nginx config files if they exist -if [ -f /var/www/html/conf/nginx/nginx.conf ]; then - cp /var/www/html/conf/nginx/nginx.conf /etc/nginx/nginx.conf - info "Using custom nginx.conf" -fi - -if [ -f /var/www/html/conf/nginx/nginx-site.conf ]; then - info "Custom nginx site config found" - rm /etc/nginx/sites-available/default - cp /var/www/html/conf/nginx/nginx-site.conf /etc/nginx/sites-available/default - info "Start nginx with custom server config..." - else - info "Nginx-site.conf not found" - info "If you want to use custom configs, create config file in /var/www/html/conf/nginx/nginx-site.conf" - info "Start nginx with default config..." - rm -f /etc/nginx/sites-available/default - TASK=/etc/nginx/sites-available/default + rm -f /etc/nginx/conf.d/default.conf + TASK=/etc/nginx/conf.d/default.conf touch $TASK cat > "$TASK" < Date: Sun, 14 Jan 2024 14:54:33 +0100 Subject: [PATCH 2/2] chore: update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 55006b4..4cb339c 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ USER www-data ## Supervisord ### Add more supervisor process in -> /var/www/html/conf/worker/supervisor.conf +> /etc/supervisor/conf.d/ In case you want to execute and maintain a task or process with supervisor.