From 640ff50d7f073e7403d304da13dc4b8ddfffef09 Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Wed, 17 Dec 2025 00:07:22 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=9D=D1=83=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D1=80=D1=83=D0=B3=D0=BE=D0=BC=20=D1=85?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 18 +++++++++ Dockerfile | 103 ++++++++++++++++++++++++++++---------------------- 2 files changed, 76 insertions(+), 45 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d3444af --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +# .dockerignore +docker-compose.yml +Dockerfile +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.example +.env.backup +.env.production +.phpunit.result.cache +/.idea +/.vscode +.git diff --git a/Dockerfile b/Dockerfile index 39b4bb0..33081b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,57 @@ -FROM php:8.3-fpm +ARG NODE_VERSION=24.12.0 +FROM php:8.3-fpm-alpine AS phpbuild + +# Install base dependencies +RUN apk add --no-cache \ + bash \ + curl \ + git \ + wget + +# Установка Composer +COPY --from=composer:2.7.8 /usr/bin/composer /usr/bin/composer + +WORKDIR /var/www + +# Копирование необходимых файлов и изменение разрешений +COPY . . +RUN chown -R www:www /var/www \ + && chmod -R 775 /var/www/storage \ + && chmod -R 775 /var/www/bootstrap/cache + +# Установка php и зависимостей +RUN composer install --no-dev --prefer-dist + +RUN chown -R www:www /var/www/vendor \ + && chmod -R 775 /var/www/vendor + +FROM node:${NODE_VERSION} AS jsbuild + +WORKDIR /var/www + +COPY . . + +# Установка node.js зависимостей +RUN npm install \ + && npm run build + +FROM php:8.3-fpm-alpine # 1. Сначала обновляем и ставим минимальные зависимости -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ git \ wget \ - gnupg \ - ca-certificates \ - && rm -rf /var/lib/apt/lists/* + gnupg # 2. Устанавливаем зависимости для самых важных расширений -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ libzip-dev \ libxml2-dev \ libonig-dev \ libicu-dev \ libcurl4-openssl-dev \ libssl-dev \ - zlib1g-dev \ - && rm -rf /var/lib/apt/lists/* + zlib1g-dev # 3. Устанавливаем БАЗОВЫЕ расширения (которые точно работают) RUN docker-php-ext-install \ @@ -29,21 +63,19 @@ RUN docker-php-ext-install \ pdo # 4. Устанавливаем зависимости для GD -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ - libwebp-dev \ - && rm -rf /var/lib/apt/lists/* + libwebp-dev # 5. Настраиваем и устанавливаем GD RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \ && docker-php-ext-install gd # 6. Устанавливаем зависимости для баз данных -RUN apt-get update && apt-get install -y \ - libpq-dev \ - && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache \ + libpq-dev # 7. Устанавливаем расширения для баз данных RUN docker-php-ext-install \ @@ -69,11 +101,10 @@ RUN docker-php-ext-install \ sockets # 9. Устанавливаем зависимости для системных расширений -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ libxslt-dev \ libexif-dev \ libffi-dev \ - && rm -rf /var/lib/apt/lists/* # 10. Устанавливаем системные расширения RUN docker-php-ext-install \ @@ -82,13 +113,7 @@ RUN docker-php-ext-install \ ffi \ shmop -# 11. Устанавливаем PECL расширения -#RUN apt-get update && apt-get install -y \ -# libmagickwand-dev \ -# && rm -rf /var/lib/apt/lists/* - -# 12. Устанавливаем через PECL по одному с проверкой -#RUN pecl install redis && docker-php-ext-enable redis +# 11. Установка Redis RUN cd /tmp && \ git clone --branch 6.3.0 --depth 1 https://github.com/phpredis/phpredis.git && \ cd phpredis && \ @@ -99,35 +124,23 @@ RUN cd /tmp && \ docker-php-ext-enable redis && \ rm -rf /tmp/phpredis -# 13. Imagick может быть проблемным - ставим последним -#RUN if pecl install imagick; then \ -# docker-php-ext-enable imagick; \ -# fi +# 12. Установка Composer +#RUN curl -sS https://getcomposer.org/installer | php -- \ +# --install-dir=/usr/local/bin --filename=composer -# 14. Дополнительные PECL расширения (по желанию) - раскомментируйте если нужно -# RUN pecl install igbinary && docker-php-ext-enable igbinary && echo "✅ Igbinary установлен" -# RUN pecl install msgpack && docker-php-ext-enable msgpack && echo "✅ Msgpack установлен" -# RUN pecl install grpc && docker-php-ext-enable grpc && echo "✅ GRPC установлен" - -# 15. Memcache (устаревшее, но если нужно) - раскомментируйте если нужно -# RUN pecl install memcache && docker-php-ext-enable memcache && echo "✅ Memcache установлен" - -# 16. Установка Composer -RUN curl -sS https://getcomposer.org/installer | php -- \ - --install-dir=/usr/local/bin --filename=composer - -# 17. Создание пользователя +# 13. Создание пользователя RUN groupadd -g 1000 www && \ - useradd -u 1000 -ms /bin/bash -g www www + useradd -u 1000 -ms /bin/ash -g www www -# 18. Копирование файлов проекта -COPY --chown=www:www . /var/www +# 14. Копирование файлов проекта +COPY --chown=www:www --from=phpbuild /var/www /var/www +COPY --chown=www:www --from=jsbuild /var/www/node_modules /var/www/node_modules WORKDIR /var/www -# 19. Смена пользователя +# 15. Смена пользователя USER www -# 20. Expose port 9000 и запуск php-fpm +# 16. Expose port 9000 и запуск php-fpm EXPOSE 9000 CMD ["php-fpm"]