Monday, March 31, 2025

Move Codeigniter 4 project to Container Docker get Class "Locale" not found

  • ย้าย CI4 site project จาก physical สู่ container docker
  • ทำ alias name reverse proxy apache เรียบร้อย
  • รันโปรเจค error (env developement mode)

Solved

  • ติดตั้ง php extension ใน container เราด้วย Dockerfile
  • ตัวอย่าง Dockerfile จาก Gemini

FROM php:7.4-apache


# Install necessary extensions and dependencies

RUN apt-get update && apt-get install -y \

    libzip-dev \

    zip \

    unzip \

    libicu-dev \  # Required for intl

    && docker-php-ext-install zip intl


# Copy your CodeIgniter 4 application

COPY . /var/www/html/


# Set document root

RUN a2enmod rewrite

RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/000-default.conf


# Restart Apache

RUN service apache2 restart


# Expose port 80

EXPOSE 80

  • ส่วนอันนี้ตัวอย่างของเรา Dockerfile

FROM php:7.4-apache

# Install PHP extensions
RUN docker-php-ext-install pdo pdo_mysql mysqli
# RUN a2enmod rewrite

# Copy the custom php.ini file
#COPY php.ini /usr/local/etc/php/
#RUN a2enmod rewrite && apache2-foreground
#RUN service apache2 restart

# Use the official PHP-Apache image from Docker Hub
#FROM php:8.1-apache

# Install dependencies if needed
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    zip \
    unzip \
    libicu-dev \ 
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd zip intl
# Required for intl
# libicu-dev
# Enable Apache modules, including mod_rewrite
#RUN a2enmod rewrite

  • สั่ง build image ใหม่ก่อน run จาก image อันใหม่ (ใส่ --build ถ้าไม่ใส่มันจะเรียกใช้ image จาก cache ที่โหลดไว้แล้วในเครื่องนั้นๆ)

# docker-compose up -d --build

เพิ่มเติม

  • ตัวอย่าง reverse proxy apache2 alias 


ProxyPass /mysite/ http://ip:port/

ProxyPassReverse /mysite/ http://ip:port/

ProxyPreserveHost On

RequestHeader set X-Forwarded-Proto "https"

RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s

  • แก้ไขโค้ดบางอัน CI4

return redirect()->to("/"); => return redirect()->to(base_url("/home"));


No comments:

Post a Comment

Popular Posts