Files
kartoteka/Dockerfile
2025-12-16 17:01:58 +09:00

134 lines
4.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM php:8.3-fpm
# 1. Сначала обновляем и ставим минимальные зависимости
RUN apt-get update && apt-get install -y \
git \
wget \
gnupg \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# 2. Устанавливаем зависимости для самых важных расширений
RUN apt-get update && apt-get install -y \
libzip-dev \
libxml2-dev \
libonig-dev \
libicu-dev \
libcurl4-openssl-dev \
libssl-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# 3. Устанавливаем БАЗОВЫЕ расширения (которые точно работают)
RUN docker-php-ext-install \
bcmath \
intl \
mbstring \
zip \
opcache \
pdo
# 4. Устанавливаем зависимости для GD
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libwebp-dev \
&& rm -rf /var/lib/apt/lists/*
# 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/*
# 7. Устанавливаем расширения для баз данных
RUN docker-php-ext-install \
mysqli \
pdo_mysql \
pdo_pgsql \
pgsql
# 8. Устанавливаем оставшиеся расширения
RUN docker-php-ext-install \
calendar \
ctype \
curl \
fileinfo \
ftp \
gettext \
iconv \
phar \
posix \
xml \
dom \
simplexml \
sockets
# 9. Устанавливаем зависимости для системных расширений
RUN apt-get update && apt-get install -y \
libxslt-dev \
libexif-dev \
libffi-dev \
&& rm -rf /var/lib/apt/lists/*
# 10. Устанавливаем системные расширения
RUN docker-php-ext-install \
xsl \
exif \
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
RUN cd /tmp && \
git clone --branch 6.3.0 --depth 1 https://github.com/phpredis/phpredis.git && \
cd phpredis && \
phpize && \
./configure && \
make -j$(nproc) && \
make install && \
docker-php-ext-enable redis && \
rm -rf /tmp/phpredis
# 13. Imagick может быть проблемным - ставим последним
#RUN if pecl install imagick; then \
# docker-php-ext-enable imagick; \
# fi
# 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. Создание пользователя
RUN groupadd -g 1000 www && \
useradd -u 1000 -ms /bin/bash -g www www
# 18. Копирование файлов проекта
COPY --chown=www:www . /var/www
WORKDIR /var/www
# 19. Смена пользователя
USER www
# 20. Expose port 9000 и запуск php-fpm
EXPOSE 9000
CMD ["php-fpm"]