การใช้ 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 18 Line Dev 34 MySQL Learning 3 NodeJs 14 OpenCart 4 OpenCart 3 19 Phonegap 177 PHP Learning 8 Slim 22 VueJS 1 Web Service 5 อื่นๆ
- ถามปัญหาการเขียนโปรแกรม
- จากบทความ: การสร้างปุ่มยืนยันให้กับ ลิ้งค์ ด้วย function return confirm() ตอบ 2 อ่าน 1354
- textbox array 2 ตัว มาลบกัน แล้วให้แสดงค่าใน textbox array ผลลัพธ์ เพื่อเอาไปบันทึกข้อมูล ตอบ 1 อ่าน 1979
- fullcalendar 3.6.2 วันที่กิจกรรมไม่ครบตามจำนวนในฐานข้อมูล ตอบ 2 อ่าน 3133
- ช่วยหน่อยครับ ผมอยากทราบวิธีการเช็คไฟล์วีดีโอหน่อยครับ ตอบ 1 อ่าน 3984
- jquery นับจำนวนเลือก radio array อย่างน้อย 1 ตัว แต่ไม่เกิน 3 ตอบ 10 อ่าน 4430
- จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี ตอบ 1 อ่าน 3779
- ออกรายงานสรุปด้วยกราฟครับ ขอคำแนะนำ แนวทางด้วยครับ ตอบ 2 อ่าน 2547
- ส่งค่าที่เป็นเท้กบ๊อกอาเรย์จากการเลือก ไปไม่ได้ครับ ตอบ 3 อ่าน 2353
- ขอวิธีการดึงข่าว RSS Feed ด้วย PHP จากเว็บไซต์อื่นมาแสดง โดยที่เปิดลิงก์เป็น URL เว็บไซต์ของเรา ตอบ 1 อ่าน 1405
- ส่งค่าตัวแปรอีกตัวนึง ในฟังก์ชั่น ajax ตอบ 3 อ่าน 1532
- ตอบคำถามกลับล่าสุด
- เล่น audio เมื่อ play เสร็จแล้วหรือเล่นไปได้สัก 5 นาที จะขึ้นลิงค์ให้กดไปหน้าอื่น ตอบ 8 อ่าน 2804
- ช่วยหน่อยครับ ติดปัญหาเกี่ยวกับการเปิด pdf บน server จริงครับ (HTTP error 500) ตอบ 3 อ่าน 2721
- สอบถามเกี่ยวกับวิธีเขียน upload file ไปยัง domain อื่นหน่อยครับ ตอบ 1 อ่าน 1479
- วิธีการส่งค่าวันที่ โดยการคลิ๊กเลือกวันที่นั้นๆ จากปฏิทิน fullcalendar ตอบ 1 อ่าน 1668
- ขอตัวอย่าง Flutter insert to mysql ตอบ 1 อ่าน 1459
- ช่วยหน่อยครับติดปัญหาเกี่ยวกับการเขียน array หลายชั่นครับ ตอบ 1 อ่าน 1336
- ทำโปรเจค laravel อยากทำ api login line google ตอบ 1 อ่าน 1307
ขอบคุณทุกการสนับสนุน