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"]
|