fix: Dockerfile merge conflict 해결 및 8.2와 동일한 구조로 통일
This commit is contained in:
103
8.4/Dockerfile
103
8.4/Dockerfile
@ -1,21 +1,3 @@
|
|||||||
<<<<<<< HEAD
|
|
||||||
# =========================
|
|
||||||
# Build stage (확장 설치)
|
|
||||||
# =========================
|
|
||||||
FROM php:8.4-apache AS build
|
|
||||||
|
|
||||||
# Install system deps and build requirements
|
|
||||||
RUN set -eux; \
|
|
||||||
apt-get update; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
unzip \
|
|
||||||
git \
|
|
||||||
curl \
|
|
||||||
libfreetype6-dev \
|
|
||||||
libicu-dev \
|
|
||||||
libjpeg-dev \
|
|
||||||
libmagickwand-dev \
|
|
||||||
=======
|
|
||||||
FROM php:8.4-apache
|
FROM php:8.4-apache
|
||||||
|
|
||||||
# 기본 패키지
|
# 기본 패키지
|
||||||
@ -29,119 +11,35 @@ RUN set -eux; \
|
|||||||
libfreetype6-dev \
|
libfreetype6-dev \
|
||||||
libicu-dev \
|
libicu-dev \
|
||||||
libjpeg-dev \
|
libjpeg-dev \
|
||||||
>>>>>>> 627b404081a96f36103d454c7d5a928777566a0e
|
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libwebp-dev \
|
libwebp-dev \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
<<<<<<< HEAD
|
|
||||||
ghostscript \
|
|
||||||
; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Configure and install PHP extensions
|
|
||||||
=======
|
|
||||||
libmagickwand-dev \
|
libmagickwand-dev \
|
||||||
; \
|
; \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# PHP extensions (카페24 환경 최대한 유사)
|
# PHP extensions (카페24 환경 최대한 유사)
|
||||||
>>>>>>> 627b404081a96f36103d454c7d5a928777566a0e
|
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
docker-php-ext-configure gd \
|
docker-php-ext-configure gd \
|
||||||
--with-freetype \
|
--with-freetype \
|
||||||
--with-jpeg \
|
--with-jpeg \
|
||||||
--with-webp \
|
--with-webp \
|
||||||
; \
|
; \
|
||||||
<<<<<<< HEAD
|
|
||||||
docker-php-ext-install -j"$(nproc)" \
|
|
||||||
=======
|
|
||||||
docker-php-ext-install -j$(nproc) \
|
docker-php-ext-install -j$(nproc) \
|
||||||
>>>>>>> 627b404081a96f36103d454c7d5a928777566a0e
|
|
||||||
bcmath \
|
bcmath \
|
||||||
exif \
|
exif \
|
||||||
gd \
|
gd \
|
||||||
intl \
|
intl \
|
||||||
mysqli \
|
mysqli \
|
||||||
<<<<<<< HEAD
|
|
||||||
zip \
|
|
||||||
soap \
|
|
||||||
=======
|
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
zip \
|
zip \
|
||||||
soap \
|
soap \
|
||||||
opcache \
|
opcache \
|
||||||
>>>>>>> 627b404081a96f36103d454c7d5a928777566a0e
|
|
||||||
; \
|
; \
|
||||||
pecl install imagick-3.6.0; \
|
pecl install imagick-3.6.0; \
|
||||||
docker-php-ext-enable imagick
|
docker-php-ext-enable imagick
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
# Enable Opcache with recommended settings
|
|
||||||
RUN set -eux; \
|
|
||||||
docker-php-ext-enable opcache; \
|
|
||||||
{ \
|
|
||||||
echo 'opcache.memory_consumption=128'; \
|
|
||||||
echo 'opcache.interned_strings_buffer=8'; \
|
|
||||||
echo 'opcache.max_accelerated_files=4000'; \
|
|
||||||
echo 'opcache.revalidate_freq=2'; \
|
|
||||||
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
|
|
||||||
|
|
||||||
# Error logging settings
|
|
||||||
RUN { \
|
|
||||||
echo 'error_reporting = E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_RECOVERABLE_ERROR'; \
|
|
||||||
echo 'display_errors = Off'; \
|
|
||||||
echo 'display_startup_errors = Off'; \
|
|
||||||
echo 'log_errors = On'; \
|
|
||||||
echo 'error_log = /dev/stderr'; \
|
|
||||||
echo 'log_errors_max_len = 1024'; \
|
|
||||||
echo 'ignore_repeated_errors = On'; \
|
|
||||||
echo 'ignore_repeated_source = Off'; \
|
|
||||||
echo 'html_errors = Off'; \
|
|
||||||
} > /usr/local/etc/php/conf.d/error-logging.ini
|
|
||||||
|
|
||||||
# =========================
|
|
||||||
# Runtime stage (슬림화)
|
|
||||||
# =========================
|
|
||||||
FROM php:8.4-apache
|
|
||||||
|
|
||||||
# Apache modules
|
|
||||||
RUN set -eux; \
|
|
||||||
a2enmod rewrite expires; \
|
|
||||||
a2enmod remoteip; \
|
|
||||||
{ \
|
|
||||||
echo 'RemoteIPHeader X-Forwarded-For'; \
|
|
||||||
echo 'RemoteIPInternalProxy 10.0.0.0/8'; \
|
|
||||||
echo 'RemoteIPInternalProxy 172.16.0.0/12'; \
|
|
||||||
echo 'RemoteIPInternalProxy 192.168.0.0/16'; \
|
|
||||||
echo 'RemoteIPInternalProxy 169.254.0.0/16'; \
|
|
||||||
echo 'RemoteIPInternalProxy 127.0.0.0/8'; \
|
|
||||||
} > /etc/apache2/conf-available/remoteip.conf; \
|
|
||||||
a2enconf remoteip; \
|
|
||||||
find /etc/apache2 -type f -name '*.conf' -exec sed -ri 's/([[:space:]]*LogFormat[[:space:]]+"[^"]*)%h([^"]*")/\1%a\2/g' '{}' +
|
|
||||||
|
|
||||||
# 복사: build stage 에서 설치한 확장 및 설정
|
|
||||||
COPY --from=build /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
|
|
||||||
COPY --from=build /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
|
|
||||||
|
|
||||||
# Install Composer (official image에서 복사)
|
|
||||||
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
|
||||||
|
|
||||||
# 프로젝트 composer.json 기반으로 설치하는 게 가장 이상적
|
|
||||||
# 여기서는 추가 패키지 예시
|
|
||||||
WORKDIR /var/www/html
|
|
||||||
RUN composer require google/cloud \
|
|
||||||
&& composer require shuchkin/simplexlsx
|
|
||||||
|
|
||||||
# Entrypoint 설정
|
|
||||||
COPY entrypoint.sh /usr/local/bin
|
|
||||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
|
||||||
ENTRYPOINT ["entrypoint.sh"]
|
|
||||||
CMD ["apache2-foreground"]
|
|
||||||
|
|
||||||
=======
|
|
||||||
# Apache 모듈
|
# Apache 모듈
|
||||||
RUN a2enmod rewrite headers expires remoteip
|
RUN a2enmod rewrite headers expires remoteip
|
||||||
|
|
||||||
@ -175,4 +73,3 @@ RUN chmod +x /usr/local/bin/entrypoint.sh
|
|||||||
|
|
||||||
ENTRYPOINT ["entrypoint.sh"]
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
CMD ["apache2-foreground"]
|
CMD ["apache2-foreground"]
|
||||||
>>>>>>> 627b404081a96f36103d454c7d5a928777566a0e
|
|
||||||
|
|||||||
Reference in New Issue
Block a user