diff --git a/_docker/app/Dockerfile b/_docker/app/Dockerfile index ac7396b..1b9a63b 100644 --- a/_docker/app/Dockerfile +++ b/_docker/app/Dockerfile @@ -1,58 +1,58 @@ FROM php:8.2-fpm -# Установка необходимых пакетов +# Установка системных зависимостей RUN apt-get update && apt-get install -y \ - apt-utils \ - libpq-dev \ - libpng-dev \ - libjpeg-dev \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libgd-dev \ - libwebp-dev \ - libzip-dev \ - zip \ - unzip \ - git \ - cron && \ - docker-php-ext-configure gd --with-webp --with-jpeg && \ - docker-php-ext-install gd && \ - docker-php-ext-install pdo_mysql && \ - docker-php-ext-install bcmath && \ - docker-php-ext-install zip && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + apt-utils \ + libpq-dev \ + libpng-dev \ + libjpeg-dev \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libgd-dev \ + libwebp-dev \ + libzip-dev \ + zip \ + unzip \ + git \ + cron \ + supervisor \ + zlib1g-dev \ + libicu-dev \ + g++ \ + default-mysql-client \ + && docker-php-ext-configure gd --with-webp --with-jpeg \ + && docker-php-ext-install gd pdo_mysql bcmath zip intl \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# Установка дополнительных библиотек -RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ -RUN docker-php-ext-configure intl -RUN docker-php-ext-install intl - -RUN apt-get update && apt-get install -y default-mysql-client - -# Копирование конфигурационного файла PHP -COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini - -# Установка Node.js -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get install -y nodejs npm - -EXPOSE 6001 -EXPOSE 5173 +# Установка Node.js (актуальная LTS-версия) +RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm +# Установка Composer ENV COMPOSER_ALLOW_SUPERUSER=1 RUN curl -sS https://getcomposer.org/installer | php -- \ --filename=composer \ --install-dir=/usr/local/bin +# Копирование конфигураций +COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini +COPY ./_docker/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + # Настройка Cron COPY ./_docker/app/crontab /etc/cron.d/laravel-cron -RUN chmod 0644 /etc/cron.d/laravel-cron # Устанавливаем правильные права -RUN crontab /etc/cron.d/laravel-cron # Добавляем задачи в crontab -RUN touch /var/log/cron.log # Создаем файл для логов Cron +RUN chmod 0644 /etc/cron.d/laravel-cron \ + && crontab /etc/cron.d/laravel-cron \ + && touch /var/log/cron.log +# Рабочая директория WORKDIR /var/www -# Запуск Cron и PHP-FPM -CMD ["sh", "-c", "cron && php-fpm"] \ No newline at end of file +# Запуск Supervisor (управляет PHP-FPM и Inertia SSR) +CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"] + +# Открываем порты +EXPOSE 9000 +EXPOSE 13714 \ No newline at end of file diff --git a/_docker/supervisor/supervisord.conf b/_docker/supervisor/supervisord.conf index 2e53d97..e8aa81e 100644 --- a/_docker/supervisor/supervisord.conf +++ b/_docker/supervisor/supervisord.conf @@ -1,12 +1,25 @@ [supervisord] nodaemon=true +logfile=/var/www/storage/logs/supervisord.log +pidfile=/var/run/supervisord.pid -[program:laravel-worker] -process_name=%(program_name)s_%(process_num)02d -command=php /var/www/artisan queue:work --sleep=3 --tries=3 +[program:php-fpm] +command=/usr/local/sbin/php-fpm autostart=true autorestart=true -user=www-data -numprocs=1 -redirect_stderr=true -stdout_logfile=/var/www/storage/logs/worker.log \ No newline at end of file +stderr_logfile=/var/www/storage/logs/php-fpm.err.log +stdout_logfile=/var/www/storage/logs/php-fpm.out.log + +[program:inertia-ssr] +command=php /var/www/artisan inertia:start-ssr +autostart=true +autorestart=true +stderr_logfile=/var/www/storage/logs/inertia-ssr.err.log +stdout_logfile=/var/www/storage/logs/inertia-ssr.out.log + +[program:cron] +command=cron -f +autostart=true +autorestart=true +stderr_logfile=/var/www/storage/logs/cron.err.log +stdout_logfile=/var/www/storage/logs/cron.out.log \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ff6e4e8..7faf38b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,8 +23,6 @@ services: restart: always ports: - '5173' - command: > - sh -c "cron && php artisan inertia:start-ssr & php-fpm" php-queue-worker: restart: always