190 lines
5.7 KiB
Docker
190 lines
5.7 KiB
Docker
FROM composer:latest AS composer
|
||
FROM php:8.2-fpm
|
||
|
||
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||
|
||
ARG USER_ID
|
||
ARG GROUP_ID
|
||
|
||
ADD images/php82/php.ini /usr/local/etc/php/php.ini
|
||
ADD www/first.loc/api /var/www/first.loc/api
|
||
|
||
# ============================================
|
||
# БЛОК 1: Настройка пользователя и прав
|
||
# ============================================
|
||
RUN chown -R 1000:1000 /var/www/ && \
|
||
usermod -u 1000 www-data && \
|
||
groupmod -g 1000 www-data
|
||
|
||
# ============================================
|
||
# БЛОК 2: Базовая система и обновление пакетов
|
||
# ============================================
|
||
RUN apt-get update -y && \
|
||
apt-get -y install \
|
||
gcc \
|
||
make \
|
||
autoconf \
|
||
libc-dev \
|
||
pkg-config \
|
||
libzip-dev \
|
||
locales
|
||
|
||
# ============================================
|
||
# БЛОК 3: Основные инструменты и библиотеки
|
||
# ============================================
|
||
RUN apt-get install -y --no-install-recommends \
|
||
git \
|
||
libz-dev \
|
||
libpq-dev \
|
||
libxml2-dev \
|
||
libmemcached-dev \
|
||
libldap2-dev \
|
||
libbz2-dev \
|
||
zlib1g-dev \
|
||
libicu-dev \
|
||
g++ \
|
||
libssl-dev \
|
||
libssl-doc \
|
||
libsasl2-dev \
|
||
curl \
|
||
libcurl4-openssl-dev
|
||
|
||
# ============================================
|
||
# БЛОК 4: Специализированные библиотеки
|
||
# ============================================
|
||
RUN apt-get install -y --no-install-recommends \
|
||
libgmp-dev \
|
||
firebird-dev \
|
||
libib-util
|
||
|
||
# ============================================
|
||
# БЛОК 5: Библиотеки для изображений и графики
|
||
# ============================================
|
||
RUN apt-get install -y --no-install-recommends \
|
||
re2c \
|
||
libpng++-dev \
|
||
libwebp-dev \
|
||
libjpeg-dev \
|
||
libjpeg62-turbo-dev \
|
||
libpng-dev \
|
||
libxpm-dev \
|
||
libvpx-dev \
|
||
libfreetype6-dev
|
||
|
||
# ============================================
|
||
# БЛОК 6: Python и ImageMagick
|
||
# ============================================
|
||
RUN apt-get install -y --no-install-recommends \
|
||
python3 \
|
||
python3-pip \
|
||
libmagick++-dev \
|
||
libmagickwand-dev
|
||
|
||
# ============================================
|
||
# БЛОК 7: Дополнительные утилиты и библиотеки
|
||
# ============================================
|
||
RUN apt-get install -y --no-install-recommends \
|
||
zlib1g-dev \
|
||
libgd-dev \
|
||
unzip \
|
||
libpcre2-dev \
|
||
libtidy-dev \
|
||
libxslt1-dev \
|
||
libmagic-dev \
|
||
libexif-dev \
|
||
file \
|
||
libmhash2 \
|
||
libmhash-dev \
|
||
libkrb5-dev \
|
||
libssh2-1-dev \
|
||
poppler-utils \
|
||
ghostscript \
|
||
libmagickwand-dev \
|
||
libsnmp-dev \
|
||
libedit-dev \
|
||
libreadline-dev \
|
||
libsodium-dev \
|
||
freetds-bin \
|
||
freetds-dev \
|
||
freetds-common \
|
||
libct4 \
|
||
libsybdb5 \
|
||
tdsodbc \
|
||
librecode-dev \
|
||
libpspell-dev \
|
||
libonig-dev
|
||
|
||
# ============================================
|
||
# БЛОК 8: Пропускаем IMAP (не нужен для работы)
|
||
# ============================================
|
||
RUN echo "IMAP extension skipped - continuing with other extensions"
|
||
|
||
# ============================================
|
||
# БЛОК 9: Установка расширений PHP (часть 1)
|
||
# ============================================
|
||
RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/ && \
|
||
docker-php-ext-install pdo_dblib && \
|
||
docker-php-ext-install dba && \
|
||
docker-php-ext-install curl && \
|
||
docker-php-ext-install fileinfo && \
|
||
docker-php-ext-install filter && \
|
||
docker-php-ext-install exif && \
|
||
docker-php-ext-install gettext && \
|
||
docker-php-ext-install gmp && \
|
||
docker-php-ext-install iconv
|
||
|
||
# ============================================
|
||
# БЛОК 10: Установка расширений PHP (часть 2 - базы данных)
|
||
# ============================================
|
||
RUN docker-php-ext-install mysqli && \
|
||
docker-php-ext-install pdo_mysql && \
|
||
docker-php-ext-install pdo_pgsql && \
|
||
docker-php-ext-install pgsql && \
|
||
docker-php-ext-install session && \
|
||
docker-php-ext-install zip && \
|
||
docker-php-ext-install xml
|
||
|
||
# ============================================
|
||
# БЛОК 11: Установка GD с конфигурацией
|
||
# ============================================
|
||
RUN docker-php-ext-configure gd \
|
||
--with-jpeg \
|
||
--with-xpm \
|
||
--with-webp \
|
||
--with-freetype && \
|
||
docker-php-ext-install -j$(nproc) gd
|
||
|
||
# ============================================
|
||
# БЛОК 12: Установка MongoDB через PECL
|
||
# ============================================
|
||
RUN pecl install mongodb && \
|
||
docker-php-ext-enable mongodb
|
||
|
||
# ============================================
|
||
# БЛОК 13: Настройка локали
|
||
# ============================================
|
||
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
|
||
locale-gen en_US.UTF-8 && \
|
||
update-locale LANG=en_US.UTF-8
|
||
|
||
# ============================================
|
||
# БЛОК 14: Очистка и финальные права
|
||
# ============================================
|
||
RUN chmod +x /usr/local/bin/* && \
|
||
apt-get clean && \
|
||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||
|
||
# ============================================
|
||
# Финальные настройки
|
||
# ============================================
|
||
ENV LANG='en_US.UTF-8' \
|
||
LANGUAGE='en_US:en' \
|
||
LC_ALL='en_US.UTF-8'
|
||
|
||
WORKDIR /var/www
|
||
USER 1000:1000
|
||
|
||
RUN mkdir -p /var/www/first.loc/api/tmp
|
||
|
||
CMD ["php-fpm"]
|