From e6af72a77850f3c03fb7b150bb628973fab1aa85 Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Mon, 22 Dec 2025 13:09:25 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=D1=85=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 25 +++++++++---------------- docker-compose.yml | 29 ++++------------------------- docker/app.conf | 2 +- docker/nginx.conf | 1 - docker/supervisord.conf | 25 +++++++++++++++++++++++++ 5 files changed, 39 insertions(+), 43 deletions(-) create mode 100644 docker/supervisord.conf diff --git a/Dockerfile b/Dockerfile index f800164..0f85fc0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Этап 1: PHP зависимости -FROM php:8.3-fpm-bookworm AS phpbuild +FROM dh-mirror.gitverse.ru/php:8.3-fpm AS phpbuild # Установка системных зависимостей RUN apt-get update && apt-get install -y \ @@ -55,7 +55,7 @@ RUN echo "opcache.enable=1" >> /usr/local/etc/php/conf.d/opcache.ini && \ echo "opcache.validate_timestamps=0" >> /usr/local/etc/php/conf.d/opcache.ini # Установка Composer -COPY --from=composer:2.7 /usr/bin/composer /usr/bin/composer +COPY --from=dh-mirror.gitverse.ru/composer:2.7 /usr/bin/composer /usr/bin/composer WORKDIR /var/www @@ -78,7 +78,7 @@ RUN chown -R www-data:www-data /var/www && \ chmod -R 775 /var/www/storage /var/www/bootstrap/cache # Этап 2: Сборка фронтенда (Inertia + Vue 3) -FROM node:20-bookworm-slim AS jsbuild +FROM dh-mirror.gitverse.ru/node:20 AS jsbuild # Установка дополнительных зависимостей для сборки RUN apt-get update && apt-get install -y \ @@ -106,13 +106,11 @@ COPY resources/css ./resources/css/ RUN npm run build # Этап 3: Финальный образ -FROM php:8.3-fpm-bookworm +FROM dh-mirror.gitverse.ru/php:8.3-fpm # Установка runtime зависимостей RUN apt-get update && apt-get install -y \ - libzip4 \ libxml2 \ - libicu72 \ libonig5 \ libpng16-16 \ libjpeg62-turbo \ @@ -123,6 +121,7 @@ RUN apt-get update && apt-get install -y \ libexif12 \ libffi8 \ supervisor \ + nginx \ cron \ && rm -rf /var/lib/apt/lists/* @@ -131,14 +130,10 @@ COPY --from=phpbuild /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ COPY --from=phpbuild /usr/local/lib/php/extensions/no-debug-non-zts-20230831/ /usr/local/lib/php/extensions/no-debug-non-zts-20230831/ COPY --from=phpbuild /usr/local/bin/ /usr/local/bin/ -# Создаем пользователя -RUN groupadd -g 1000 www && \ - useradd -u 1000 -ms /bin/bash -g www www - # Копируем конфигурации COPY docker/nginx.conf /etc/nginx/nginx.conf COPY docker/app.conf /etc/nginx/conf.d/default.conf -#COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY docker/supervisord.conf /etc/supervisor/supervisord.conf WORKDIR /var/www @@ -149,13 +144,11 @@ COPY --chown=www:www --from=jsbuild /var/www/node_modules ./node_modules # Настройка прав и оптимизация Laravel RUN mkdir -p /var/log/supervisor && \ - chown -R www:www /var/www /var/log/supervisor && \ + chown -R www-data:www-data /var/www /var/log/supervisor && \ chmod -R 775 /var/www/storage /var/www/bootstrap/cache # Создание ссылки на Storage RUN php artisan storage:link -USER www - -EXPOSE 9000 -CMD ["php-fpm"] +EXPOSE 80 +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/docker-compose.yml b/docker-compose.yml index 34267e2..d5d278e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,45 +1,24 @@ services: #PHP Service app: - build: - context: . - dockerfile: Dockerfile - image: kartoteka:latest + image: kartoteka:v1.0 container_name: kartoteka_app restart: unless-stopped tty: true + ports: + - "8090:80" environment: SERVICE_NAME: app SERVICE_TAGS: dev working_dir: /var/www volumes: - - app_volume:/var/www - ./.env:/var/www/.env - ./docker/php.ini:/usr/local/etc/php/conf.d/app.ini + - ./docker/blocked_ips.map:/etc/nginx/blocked_ips.map - ./storage/logs:/var/www/storage/logs networks: - app-network - #Nginx Service - webserver: - image: nginx:1.29.4 - container_name: kartoteka_nginx - restart: unless-stopped - tty: true - ports: - - "8090:80" - volumes: - - app_volume:/var/www:ro - - ./docker/app.conf:/etc/nginx/conf.d/default.conf - - ./docker/nginx.conf:/etc/nginx/nginx.conf - - ./docker/blocked_ips.map:/etc/nginx/blocked_ips.map - networks: - - app-network - -#Docker Volumes -volumes: - app_volume: - #Docker Networks networks: app-network: diff --git a/docker/app.conf b/docker/app.conf index 4a7f296..e448d1b 100644 --- a/docker/app.conf +++ b/docker/app.conf @@ -135,7 +135,7 @@ server { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass app:9000; + fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # Оптимизация из основного конфига diff --git a/docker/nginx.conf b/docker/nginx.conf index 76c915e..2190329 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -1,4 +1,3 @@ -user nginx; worker_processes auto; worker_rlimit_nofile 65535; diff --git a/docker/supervisord.conf b/docker/supervisord.conf new file mode 100644 index 0000000..760cae8 --- /dev/null +++ b/docker/supervisord.conf @@ -0,0 +1,25 @@ +[supervisord] +nodaemon=true +logfile=/var/log/supervisor/supervisor.log +logfile_maxbytes=50MB +logfile_backups=3 + +[program:php-fpm] +command=/usr/local/sbin/php-fpm -F +autostart=true +autorestart=true +priority=5 +stdout_logfile=/var/log/supervisor/php-fpm.log +stderr_logfile=/var/log/supervisor/php-fpm_err.log +logfile_maxbytes=50MB +logfile_backups=3 + +[program:nginx] +command=/usr/sbin/nginx -g "daemon off;" +autostart=true +autorestart=true +priority=10 +stdout_logfile=/var/log/supervisor/nginx.log +stderr_logfile=/var/log/supervisor/nginx_err.log +logfile_maxbytes=50MB +logfile_backups=3