การใช้ container ใน docker เพื่อพัฒนา php web application
การใช้ container ใน docker เพื่อพัฒนา php web application
สมมติเราพัฒนาใน windows โครงสร้างประมาณนี้
C:\docker\server // จัดการ container C:\docker\mysql_data // กับข้อมูลของฐานข้อมูล mysql C:\docker\server\www // สำหรับเก็บไฟล์ php
1. สร้างไฟล์ docker-compose.yml ใน
version: '3.7'
services:
mysql:
# image: mysql:latest
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: examplepassword
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
MYSQL_CHARSET: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
ports:
- "3306:3306"
volumes:
- ../mysql_data:/var/lib/mysql
php_apache:
image: php:8.1-apache
# image: php
restart: always
ports:
- "8080:80"
volumes:
- ./www:/var/www/html
depends_on:
- mysql
phpmyadmin:
# image: phpmyadmin/phpmyadmin
image: phpmyadmin
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: examplepassword
depends_on:
- mysql
2. รันคำสั่ง ผ่าน command ใน path ส่วนจัดการ container
docker-compose up -d
3. ไฟล์ index.php สำหรับทดสอบ
<?php
// สังเกตว่าตรง localhost เราจะต้องเปลี่ยนเป็นชื่อ container ฐานข้อมูล
// เนื่องจากในที่นี่กำหนดเป็นชื่อ mysql ในไฟล์ docker-compose.yml
$mysqli = new mysqli("mysql", "root","examplepassword","mydb");
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if(!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
exit();
}
phpinfo();
3. ถ้า mysqli ไม่ทำงานหรือ ᩴextension ของ php ตัวใดไม่ทำงาน ให้ไปที่ส่วนของ container ที่เป็น php apache ที่เราใช้งาน
จากนั้นเรียกใช้คำสั่ง 2 คำสั่งนี้ในส่วนของ command ดังตัวอย่างด้านล่าง
docker-php-ext-install mysqli apachectl restart
รันคำสั่งพร้อมกัน ก็จะสามารถใช้งาน การเชื่อมต่อกับฐานข้อมูล
< Back รวม Snippets
-
หมวดบทความทั้งหมด 34 AJAX Learning 25 Android Learning 46 Angular 16 AngularJs 21 Bootstrap 40 CodeIgniter 27 CodeIgniter 4 48 CSS Learning 16 Dart 8 Dev Tools 19 Expressjs 4 Firebase 75 Flutter 20 HTML5 10 Ionic Native 42 Ionicframework 80 Javascript Learning 231 jQuery Learning 10 jQuery Mobile 16 Line Dev 34 MySQL Learning 3 NodeJs 14 OpenCart 4 OpenCart 3 19 Phonegap 177 PHP Learning 8 Slim 15 TypeScript 22 VueJS 1 Web Service 5 อื่นๆ
- ถามปัญหาการเขียนโปรแกรม
- use PhpSpreadsheet Class หลังเครื่องหมายปีกกา จะขึ้น error HTTP ERROR 500 ตอบ 2 อ่าน 1960
- กดปุ่ม Refrsh Access Token ของ LINE แล้ว Error ตอบ 1 อ่าน 2481
- จากบทความ: การสร้างปุ่มยืนยันให้กับ ลิ้งค์ ด้วย function return confirm() ตอบ 2 อ่าน 4542
- textbox array 2 ตัว มาลบกัน แล้วให้แสดงค่าใน textbox array ผลลัพธ์ เพื่อเอาไปบันทึกข้อมูล ตอบ 1 อ่าน 5063
- fullcalendar 3.6.2 วันที่กิจกรรมไม่ครบตามจำนวนในฐานข้อมูล ตอบ 2 อ่าน 5475
- ช่วยหน่อยครับ ผมอยากทราบวิธีการเช็คไฟล์วีดีโอหน่อยครับ ตอบ 1 อ่าน 5690
- jquery นับจำนวนเลือก radio array อย่างน้อย 1 ตัว แต่ไม่เกิน 3 ตอบ 10 อ่าน 5588
- จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี ตอบ 1 อ่าน 4786
- ออกรายงานสรุปด้วยกราฟครับ ขอคำแนะนำ แนวทางด้วยครับ ตอบ 2 อ่าน 3564
- ส่งค่าที่เป็นเท้กบ๊อกอาเรย์จากการเลือก ไปไม่ได้ครับ ตอบ 4 อ่าน 3493
- ตอบคำถามกลับล่าสุด
- php คำนวณวันและเวลาในการทำงาน ตอบ 4 อ่าน 5547
- สอบถามดึงข้อมูลมาโชว์ textbox แล้วเก็บลงฐานข้อมูลครับ ตอบ 3 อ่าน 30742
- เล่น audio เมื่อ play เสร็จแล้วหรือเล่นไปได้สัก 5 นาที จะขึ้นลิงค์ให้กดไปหน้าอื่น ตอบ 8 อ่าน 4047
- ขอวิธีการดึงข่าว RSS Feed ด้วย PHP จากเว็บไซต์อื่นมาแสดง โดยที่เปิดลิงก์เป็น URL เว็บไซต์ของเรา ตอบ 1 อ่าน 2609
- ส่งค่าตัวแปรอีกตัวนึง ในฟังก์ชั่น ajax ตอบ 3 อ่าน 2663
- ช่วยหน่อยครับ ติดปัญหาเกี่ยวกับการเปิด pdf บน server จริงครับ (HTTP error 500) ตอบ 3 อ่าน 3831
- สอบถามเกี่ยวกับวิธีเขียน upload file ไปยัง domain อื่นหน่อยครับ ตอบ 1 อ่าน 2525
ขอบคุณทุกการสนับสนุน
![]()