หาเรื่องให้ทำจริงๆ Docker PHP5.3 + Apache2.2 Old School สุดๆ

อยู่เฉยๆ มันก็มีคนหาเรื่องให้ทำ อย่าหาทำแบบนี้เด้อสู มันเหนื่อยยยยยยยยยย

Dockerfile 
FROM httpd:2.2
COPY ./sources.list /etc/apt/sources.list
RUN apt-get update 
RUN apt-get install debian-archive-keyring
RUN apt-get update && apt-get install -y --force-yes debian-archive-keyring mysql-client libmysqlclient-dev gcc libxml2-dev make curl vim

COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf

RUN curl -o php-5.3.29.tar.gz https://museum.php.net/php5/php-5.3.29.tar.gz
RUN tar -zxvf php-5.3.29.tar.gz
RUN cd php-5.3.29 && ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli=/usr/bin/mysql_config && make && make install

COPY ./php.ini /usr/local/apache2/php-5.3.29/php.ini

COPY ./index.html /usr/local/apache2/htdocs/index.html
COPY ./index.php /usr/local/apache2/htdocs/index.php

EXPOSE 80
CMD ["httpd-foreground"]

sources.list
deb http://archive.debian.org/debian/ jessie main non-free contrib
deb-src http://archive.debian.org/debian/ jessie main non-free contrib
deb http://archive.debian.org/debian-security/ jessie/updates main non-free contrib
deb-src http://archive.debian.org/debian-security/ jessie/updates main non-free contrib

httpd.conf(เพิ่มโค้ดชุดนี้เข้าไป)
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
PHPIniDir "/usr/local/apache2/php-5.3.29"

ใช้คำสั่ง
docker run --rm <CONTAINER_NAME> cat /usr/local/apache2/conf/httpd.conf > httpd.conf
จะได้ไฟล์โหลดลงมาใน WSL ที่อยู่ในเครื่องเรา

ก่อนจะเริ่ม ขอกราบขอบพระคุณ

เริ่มอธิบายได้
เริ่มจาก Base บน httpd:2.2 แต่เนื่องจากมันเก่าไปหน่อย เลยต้องอัพเดท sources.list กันบ้าง(ปล.ในอนาคตอาจจะมีเปลี่ยนไปอีก เดี๋ยวค่อยว่ากันอีกที) จากนั้นมันถึงจะ apt-get update อะไรต่างๆนาๆได้

เสร็จแล้วก็โหลดไฟล์ PHP จากใน Museum ผ่าน curl มาแตกไฟล์แล้วทำการ ./configure ตามด้วยก๊อบไฟล์ index.html + index.php ขึ้นไปเทส(จังหวะนี้ทดสอบแค่ phpinfo() พอละ)


เอาแค่ให้มันรู้ก็พอว่ารันได้ เดี๋ยว config ค่าอะไรต่างๆนาๆค่อยไปปรับอีกทีละกัน 




Comments