- ย้าย 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 extensionsRUN 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 neededRUN 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"));