<<<<<<< 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 # 기본 패키지 RUN set -eux; \ apt update; \ apt install -y --no-install-recommends \ vim \ unzip \ curl \ ghostscript \ libfreetype6-dev \ libicu-dev \ libjpeg-dev \ >>>>>>> 627b404081a96f36103d454c7d5a928777566a0e libpng-dev \ libwebp-dev \ libzip-dev \ libxml2-dev \ <<<<<<< HEAD ghostscript \ ; \ rm -rf /var/lib/apt/lists/* # Configure and install PHP extensions ======= libmagickwand-dev \ ; \ rm -rf /var/lib/apt/lists/* # PHP extensions (카페24 환경 최대한 유사) >>>>>>> 627b404081a96f36103d454c7d5a928777566a0e RUN set -eux; \ docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ --with-webp \ ; \ <<<<<<< HEAD docker-php-ext-install -j"$(nproc)" \ ======= docker-php-ext-install -j$(nproc) \ >>>>>>> 627b404081a96f36103d454c7d5a928777566a0e bcmath \ exif \ gd \ intl \ mysqli \ <<<<<<< HEAD zip \ soap \ ======= pdo_mysql \ zip \ soap \ opcache \ >>>>>>> 627b404081a96f36103d454c7d5a928777566a0e ; \ pecl install imagick-3.6.0; \ 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 모듈 RUN a2enmod rewrite headers expires remoteip # RemoteIP (카페24 프록시 환경 대응) RUN { \ 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'; \ } > /etc/apache2/conf-available/remoteip.conf \ && a2enconf remoteip # PHP 기본 설정 (카페24 성향 반영) RUN { \ echo 'upload_max_filesize=64M'; \ echo 'post_max_size=64M'; \ echo 'memory_limit=256M'; \ echo 'max_execution_time=300'; \ echo 'date.timezone=Asia/Seoul'; \ } > /usr/local/etc/php/conf.d/custom.ini # Composer RUN curl -sS https://getcomposer.org/installer | php \ -- --install-dir=/usr/local/bin --filename=composer WORKDIR /var/www/html VOLUME /var/www/html COPY entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] CMD ["apache2-foreground"] >>>>>>> 627b404081a96f36103d454c7d5a928777566a0e