คู่มือภาษาและกรอบงาน

รันแอป Laravel บน Containers อย่างง่าย

29min

Back4App Containers เป็นแพลตฟอร์มที่ทรงพลังสำหรับการโฮสต์แอปพลิเคชัน Laravel ด้วยความสามารถในการปรับใช้แอป Laravel ที่ใช้ Docker โดยอัตโนมัติ คุณสามารถเริ่มต้นโปรเจกต์ของคุณในสภาพแวดล้อมที่สามารถปรับขนาดได้และยืดหยุ่นได้อย่างง่ายดาย.

ในคู่มือนี้ เราจะพาคุณไปผ่านกระบวนการเตรียมและปรับใช้แอปพลิเคชัน Laravel ของคุณบน Back4App Containers โดยครอบคลุมทุกอย่างตั้งแต่โปรเจกต์ง่ายๆ ไปจนถึงการตั้งค่าที่ซับซ้อนมากขึ้น เราจะเริ่มต้นด้วยการเตรียมการที่จำเป็น จากนั้นจะไปที่การทำให้แอปเป็น Docker ทดสอบในเครื่อง ผลักดันโปรเจกต์ไปยัง GitHub ตั้งค่าโปรเจกต์บน Back4App Containers ตรวจสอบการปรับใช้ และแก้ไขปัญหาทั่วไป.

หากคุณมีคำถามหรือความคิดเห็นใดๆ โปรดเข้าร่วมการสนทนาในช่อง #Containers บน Back4app Community บน Slack คุณยังสามารถติดต่อเราที่ community@back4app.com ได้ตลอดเวลา.

ในทุกช่วงเวลา หากคุณต้องการตรวจสอบโปรเจกต์ Laravel ที่ทำงานได้ตัวอย่างบน Back4app containers ให้ไปที่: https://github.com/templates-back4app/containers-php-laravel-sample

1-เตรียมแอปพลิเคชัน Laravel ของคุณ

a. โครงสร้างโปรเจกต์:

  • ตรวจสอบว่าแอปพลิเคชัน Laravel ของคุณมีโครงสร้างไดเรกทอรีที่เหมาะสม โดยมีไฟล์และโฟลเดอร์ที่จำเป็นทั้งหมด เช่น app, routes, resources, และ public, จัดระเบียบอย่างเหมาะสม.

b. ข้อกำหนด:

  • ตรวจสอบว่าข้อกำหนดที่จำเป็นทั้งหมดถูกระบุใน composer.json ไฟล์ รวมถึงเวอร์ชันที่ถูกต้องของพวกเขา.
  • ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งข้อกำหนดทั้งหมดโดยใช้ composer install เพื่อสร้าง composer.lock ไฟล์.

c. ตัวแปรสภาพแวดล้อม:

  • หากแอปพลิเคชันของคุณขึ้นอยู่กับตัวแปรสภาพแวดล้อม ให้แน่ใจว่าคุณมี .env ไฟล์ที่มีตัวแปรที่จำเป็นกำหนดไว้.
  • เมื่อทำการปรับใช้ไปยัง Back4App Containers คุณจะต้องกำหนดค่าตัวแปรสภาพแวดล้อมเหล่านี้ในการตั้งค่าการปรับใช้.

d. การตั้งค่าเซิร์ฟเวอร์ (ถ้าใช้ได้):

  • หากแอปพลิเคชัน Laravel ของคุณรวมเซิร์ฟเวอร์ที่กำหนดเอง (เช่น Apache หรือ Nginx) ให้แน่ใจว่ามันถูกตั้งค่าและกำหนดค่าอย่างถูกต้องเพื่อให้บริการแอปพลิเคชัน Laravel ของคุณ.
  • ทดสอบเซิร์ฟเวอร์ของคุณในเครื่องเพื่อตรวจสอบให้แน่ใจว่ามันทำงานตามที่คาดหวัง.

e. การปรับแต่งแอปพลิเคชัน:

  • ปรับแต่งแอปพลิเคชัน Laravel ของคุณโดยการใช้แนวทางปฏิบัติที่ดีที่สุดด้านประสิทธิภาพ.
  • ใช้เครื่องมือเช่น Lighthouse เพื่อตรวจสอบแอปพลิเคชันของคุณและแก้ไขปัญหาด้านประสิทธิภาพหรือการเข้าถึง.

f. ความเข้ากันได้กับเบราว์เซอร์:

  • ทดสอบแอปพลิเคชันของคุณในหลายเบราว์เซอร์และอุปกรณ์เพื่อให้แน่ใจว่าการแสดงผลและฟังก์ชันการทำงานถูกต้อง.

เมื่อคุณได้ตรวจสอบและเตรียมแอปพลิเคชัน Laravel ของคุณอย่างละเอียดแล้ว คุณสามารถดำเนินการไปยังขั้นตอนถัดไป ซึ่งคือการสร้าง Dockerfile สำหรับโครงการของคุณ.



2-การสร้าง Docker

การสร้างแอปพลิเคชัน Laravel ด้วย Docker เกี่ยวข้องกับการสร้าง Dockerfile ในไดเรกทอรีหลักของโครงการของคุณ Dockerfile จะมีคำสั่งในการสร้างภาพ Docker ของแอปพลิเคชันของคุณ ซึ่งสามารถนำไปใช้งานใน Back4App Containers ได้ นี่คือคำอธิบายโดยละเอียดเกี่ยวกับวิธีการสร้าง Dockerfile สำหรับแอปพลิเคชัน Laravel ทั่วไป:

1-สร้างไฟล์ใหม่ชื่อ Dockerfile (โดยไม่มีนามสกุลไฟล์) ในไดเรกทอรีหลักของแอปพลิเคชัน Laravel ของคุณ.

2-กำหนดภาพพื้นฐาน: เริ่ม Dockerfile โดยการระบุภาพพื้นฐานโดยใช้คำสั่ง FROM สำหรับแอปพลิเคชัน Laravel ทั่วไป ภาพพื้นฐานควรเป็นภาพ PHP เช่น php:8.1-apache.

Dockerfile


3-ตั้งค่าไดเรกทอรีการทำงาน: ใช้คำสั่ง WORKDIR เพื่อตั้งค่าไดเรกทอรีการทำงานสำหรับแอปพลิเคชันของคุณภายใน Docker container นี่คือที่ที่ไฟล์แอปพลิเคชันของคุณจะถูกเก็บและดำเนินการ.

Dockerfile


4-คัดลอกไฟล์โปรเจกต์: คัดลอกไฟล์ทั้งหมดจากไดเรกทอรีแอปพลิเคชัน Laravel ไปยัง Docker container โดยใช้คำสั่ง COPY.

Dockerfile


5-ติดตั้ง dependencies: ใช้คำสั่ง RUN เพื่อติดตั้ง dependencies ที่จำเป็นสำหรับแอปพลิเคชัน Laravel ของคุณโดยใช้ composer install.

Dockerfile




6-ตั้งค่าเซิร์ฟเวอร์ Apache: เปิดใช้งานโมดูล rewrite ของ Apache, กำหนดค่าไฟล์ 000-default.conf เพื่อรวมการตั้งค่า Apache ที่เหมาะสมสำหรับ Laravel และตั้งค่าตัวแปรสภาพแวดล้อมของ Apache.

Dockerfile


7-สร้างคีย์แอป Laravel: Laravel ต้องการคีย์แอปเพื่อเข้ารหัสเซสชันผู้ใช้และข้อมูลที่ละเอียดอ่อนอื่นๆ ใช้คำสั่ง RUN เพื่อสร้างคีย์แอป.

Dockerfile


8-สร้างแอปพลิเคชัน Laravel: เพิ่มคำสั่ง RUN เพื่อสร้างแอปพลิเคชัน Laravel ของคุณโดยใช้สคริปต์การสร้างของคุณ โดยทั่วไปคือ composer dump-autoload, php artisan config:cache, php artisan route:cache และ php artisan view:cache.

Dockerfile


9-เปิดเผยพอร์ตเซิร์ฟเวอร์: ใช้คำสั่ง EXPOSE เพื่อระบุพอร์ตที่เซิร์ฟเวอร์ของคุณจะทำงานภายใน Docker container ตัวอย่างเช่น คุณสามารถใช้พอร์ต 80.

Dockerfile


10-เริ่มเซิร์ฟเวอร์: ใช้คำสั่ง CMD เพื่อระบุคำสั่งที่เริ่มเซิร์ฟเวอร์เพื่อให้บริการแอปพลิเคชัน Laravel ที่คุณสร้างขึ้น.

Dockerfile


Dockerfile ที่สมบูรณ์สำหรับแอปพลิเคชัน Laravel ปกติควรมีลักษณะดังนี้:

Dockerfile
Dockerfile


3-ทดสอบโปรเจกต์ของคุณในเครื่อง

ก่อนที่จะนำแอปพลิเคชัน Laravel ของคุณไปใช้งานบน Back4App Containers สิ่งสำคัญคือต้องทดสอบในเครื่องโดยใช้ Docker ซึ่งจะช่วยให้แน่ใจว่าแอปพลิเคชันของคุณทำงานตามที่คาดหวังและช่วยให้คุณระบุและแก้ไขปัญหาก่อนการนำไปใช้งาน.

สร้างภาพ Docker สำหรับแอปพลิเคชัน Laravel ของคุณ

ในเทอร์มินัลของคุณ ให้ไปที่ไดเรกทอรีรากของโปรเจกต์ของคุณและรันคำสั่งต่อไปนี้ โดยแทนที่ your-app-name ด้วยชื่อของแอปพลิเคชันของคุณ:

docker build -t your-app-name .

รัน Docker container ในเครื่อง

ถัดไป รันคำสั่งต่อไปนี้เพื่อเริ่ม Docker container ในเครื่อง คำสั่งนี้จะแมพพอร์ตที่เปิดเผยของ container (เช่น 80) ไปยังพอร์ตบนเครื่องของคุณ (เช่น 8000):

docker run -p 8080:80 your-app-name

ทดสอบแอปพลิเคชันของคุณ

เปิดเว็บเบราว์เซอร์และไปที่ http://localhost:8080 เพื่อดูแอปพลิเคชัน Laravel ของคุณ ตรวจสอบให้แน่ใจว่าทุกอย่างทำงานตามที่คาดหวัง หากคุณพบปัญหาใด ๆ ให้แก้ไขก่อนที่จะไปยังขั้นตอนถัดไป.

4-ผลักดันโปรเจกต์ของคุณไปยัง GitHub

สร้าง .gitignore ไฟล์ในไดเรกทอรีรากของโปรเจกต์ของคุณเพื่อไม่ให้รวมไฟล์ที่ไม่จำเป็นหรือไฟล์ที่ละเอียดอ่อนจากที่เก็บของคุณ (เช่น, vendor, .env, node_modules, เป็นต้น). เริ่มต้นที่เก็บ Git, คอมมิตไฟล์โปรเจกต์ของคุณ และผลักดันไปยังที่เก็บระยะไกล (เช่น, บน GitHub).

gitCopy codegit add . git commit -m "Initial commit" git remote add origin <your-remote-repo-url> git push -u origin master

5-ปรับใช้แอปพลิเคชันของคุณบน Back4App Containers

หลังจากสร้างบัญชี Back4App ของคุณแล้ว คุณสามารถทำตามขั้นตอนที่ระบุไว้ในเอกสาร:

โดยสรุป คอนเทนเนอร์จะปฏิบัติตามคำแนะนำที่ระบุไว้ใน Dockerfile ของคุณและเริ่มสร้างแอปของคุณ.

6-ตรวจสอบการปรับใช้และแก้ไขข้อผิดพลาดที่อาจเกิดขึ้น

ติดตามบันทึกการปรับใช้และสถานะบนแดชบอร์ด Back4App Containers แก้ไขข้อผิดพลาดหรือปัญหาที่เกิดขึ้นระหว่างการปรับใช้ ในกรณีของโปรเจกต์ที่ซับซ้อนมากขึ้น ให้แน่ใจว่าบริการที่จำเป็นทั้งหมด (เช่น ฐานข้อมูลหรือ API ภายนอก) ได้รับการกำหนดค่าและเข้าถึงได้อย่างถูกต้อง.

7-การแก้ไขปัญหาทั่วไป

ข้อผิดพลาดในการปรับใช้ทั่วไปเมื่อรันแอป Laravel บน Back4App Containers มีการระบุไว้ ที่นี่. ข้อผิดพลาดทั่วไปอื่น ๆ ที่อาจเกิดขึ้นเมื่อปรับใช้แอปพลิเคชัน Laravel ได้แก่:

การกำหนดค่าพอร์ตไม่ถูกต้อง

แอปพลิเคชัน Laravel ควรได้รับการกำหนดค่าให้ทำงานบนพอร์ตที่ระบุเมื่อถูกนำไปใช้งานบน Back4App Containers หากแอปพลิเคชันยังไม่สามารถเข้าถึงได้ ให้ตรวจสอบ Dockerfile เพื่อให้แน่ใจว่าพอร์ตที่ถูกต้องถูกเปิดเผย (เช่น EXPOSE 80 สำหรับพอร์ต 80)

การพึ่งพาที่ไม่เข้ากันหรือขาดหายไป

ตรวจสอบให้แน่ใจว่าการพึ่งพาทั้งหมดที่จำเป็นถูกระบุใน composer.json ไฟล์และเวอร์ชันของพวกเขาเข้ากันได้กับกันและกับโค้ดแอปพลิเคชันของคุณ การพึ่งพาที่ขาดหายไปหรือไม่เข้ากันอาจทำให้เกิดข้อผิดพลาดในระหว่างการทำงาน

ตัวแปรสภาพแวดล้อมหรือการกำหนดค่าที่ไม่ถูกต้อง

ตรวจสอบว่าแอปพลิเคชันของคุณพึ่งพาตัวแปรสภาพแวดล้อมหรือไฟล์การกำหนดค่าเฉพาะหรือไม่ และตรวจสอบให้แน่ใจว่าพวกเขาถูกตั้งค่าอย่างถูกต้องในสภาพแวดล้อมของ Back4App Containers ตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นใน Dockerfile ของคุณโดยใช้คำสั่ง ENV.

ไม่สามารถระบุชื่อโดเมนที่มีคุณสมบัติครบถ้วนของเซิร์ฟเวอร์ได้" ข้อผิดพลาด

ปัญหา: ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Apache ไม่สามารถระบุชื่อโดเมนที่มีคุณสมบัติครบถ้วน (FQDN) ของเซิร์ฟเวอร์ได้

วิธีแก้ไข: เพื่อปิดเสียงข้อผิดพลาดนี้ คุณสามารถตั้งค่าคำสั่ง ServerName ทั่วไปในไฟล์กำหนดค่า Apache แก้ไขไฟล์กำหนดค่า Apache (apache-config.conf) ดังนี้:

apache-config.conf






500 ข้อผิดพลาดภายในเซิร์ฟเวอร์

ปัญหา: ข้อผิดพลาดนี้บ่งชี้ว่ามีปัญหากับการกำหนดค่าของเซิร์ฟเวอร์หรือแอปพลิเคชันเอง.

วิธีแก้ไข:

  • ตรวจสอบบันทึกข้อผิดพลาดของ Apache (/var/log/apache2/error.log) เพื่อดูข้อความข้อผิดพลาดที่เฉพาะเจาะจงมากขึ้น ซึ่งสามารถช่วยระบุสาเหตุของข้อผิดพลาดได้.
  • ตรวจสอบว่าไฟล์กำหนดค่าของ Apache (apache-config.conf) ถูกตั้งค่าอย่างถูกต้องด้วย DocumentRoot และ Directory ที่เหมาะสมสำหรับแอปพลิเคชัน Laravel ของคุณ.
  • ตรวจสอบให้แน่ใจว่ามีการติดตั้งและเปิดใช้งานส่วนขยาย PHP ที่จำเป็นใน Dockerfile ใช้คำสั่ง docker-php-ext-install เพื่อติดตั้งส่วนขยายที่ต้องการ และใช้คำสั่ง RUN a2enmod เพื่อเปิดใช้งานโมดูล Apache.
  • ตรวจสอบสิทธิ์และความเป็นเจ้าของของไฟล์แอปพลิเคชัน Laravel ของคุณ ใช้คำสั่ง chown เพื่อให้แน่ใจว่าไฟล์เป็นของผู้ใช้ที่เหมาะสม (www-data ในกรณีส่วนใหญ่).



ปัญหาการกำหนดค่า Apache

  1. ปัญหา: การตั้งค่า Apache ที่ไม่ถูกต้องหรือกำหนดค่าไม่ถูกต้องอาจนำไปสู่ข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด.
  2. วิธีแก้ไข:
    • ตรวจสอบไฟล์กำหนดค่าของ Apache (apache-config.conf) อีกครั้งเพื่อให้แน่ใจว่ามันชี้ไปยัง DocumentRoot ของแอปพลิเคชัน Laravel อย่างถูกต้องและมีคำสั่ง Directory ที่เหมาะสม.
    • เปิดใช้งานโมดูล rewrite โดยการรัน RUN a2enmod rewrite ใน Dockerfile นี่เป็นสิ่งจำเป็นสำหรับการทำงานของการกำหนดเส้นทางของ Laravel.

การขาดหรือการพึ่งพาที่ไม่ถูกต้อง

  1. ปัญหา: หากแอปพลิเคชัน Laravel ของคุณมีการพึ่งพาที่หายไปหรือไม่ถูกต้อง อาจส่งผลให้เกิดข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด.
  2. วิธีแก้ไข:
    • ตรวจสอบไฟล์ composer.json เพื่อให้แน่ใจว่ามีการระบุการพึ่งพาที่จำเป็นทั้งหมด รวมถึงเวอร์ชันที่ถูกต้อง.
    • รัน composer install เพื่อติดตั้งการพึ่งพาและสร้างไฟล์ composer.lock.
    • ตรวจสอบให้แน่ใจว่ามีการติดตั้งและเปิดใช้งานส่วนขยาย PHP ที่จำเป็นใน Dockerfile โดยใช้คำสั่ง docker-php-ext-install.

ปัญหาเกี่ยวกับสิทธิ์ไฟล์

  1. ปัญหา: สิทธิ์ไฟล์ที่ไม่ถูกต้องอาจทำให้เกิดปัญหากับการจัดเก็บไฟล์หรือแคชของ Laravel.
  2. วิธีแก้ไข:
    • ใช้คำสั่ง chown ใน Dockerfile เพื่อเปลี่ยนเจ้าของไฟล์แอปพลิเคชัน Laravel ไปยังผู้ใช้ที่เหมาะสม (www-data ในกรณีส่วนใหญ่).
    • ตรวจสอบให้แน่ใจว่าไดเรกทอรีการจัดเก็บและแคชมีสิทธิ์ที่ถูกต้อง คุณสามารถรันคำสั่ง chmod ใน Dockerfile เพื่อตั้งค่าสิทธิ์ที่เหมาะสม.

แอปพลิเคชันล่มหรือข้อยกเว้นที่ไม่ได้จัดการ

ข้อยกเว้นที่ไม่ได้จัดการหรือการล่มในโค้ดแอปพลิเคชัน Laravel ของคุณอาจทำให้การปรับใช้ล้มเหลวหรือพฤติกรรมที่ไม่คาดคิด ตรวจสอบบันทึกแอปพลิเคชันของคุณสำหรับข้อความแสดงข้อผิดพลาดใด ๆ และแก้ไขปัญหาในโค้ดของคุณ ตรวจสอบบันทึกของคอนเทนเนอร์โดยการรัน docker logs your-app-name เพื่อตรวจสอบว่ามีข้อผิดพลาดหรือข้อยกเว้นใด ๆ ที่ถูกโยนออกมา ใช้เครื่องมือเช่น Sentry เพื่อติดตามและตรวจสอบข้อผิดพลาดในแอปพลิเคชันของคุณ.

การกำหนดค่าของเซิร์ฟเวอร์

หากแอปพลิเคชัน Laravel ของคุณรวมการกำหนดค่าบริการที่กำหนดเอง (เช่น Apache หรือ Nginx) ให้แน่ใจว่ามันถูกกำหนดค่าอย่างถูกต้องใน Dockerfile และโมดูลหรือการกำหนดค่าที่จำเป็นได้รับการติดตั้งแล้ว.

การอนุญาตไฟล์ไม่ถูกต้อง

การอนุญาตไฟล์ที่ไม่ถูกต้องอาจทำให้เกิดข้อผิดพลาดในระหว่างการทำงานเมื่อปรับใช้แอปพลิเคชัน Laravel บน Back4App Containers ให้แน่ใจว่าไดเรกทอรีและไฟล์ที่จำเป็นมีการอนุญาตที่ถูกต้องตามที่ระบุในเอกสารของ Laravel.

ข้อจำกัดด้านหน่วยความจำ

หากแอปพลิเคชันของคุณหมดหน่วยความจำเมื่อปรับใช้บน Back4App Containers ให้พิจารณาเพิ่มขีดจำกัดหน่วยความจำใน Dockerfile โดยใช้การตั้งค่า PHP.ini.

ปัญหาด้านเครือข่าย

หากแอปพลิเคชัน Laravel ของคุณพึ่งพาบริการหรือ API ภายนอก ให้แน่ใจว่ามันถูกกำหนดค่าอย่างถูกต้องและสามารถเข้าถึงได้จากภายในสภาพแวดล้อมของ Back4App Containers ใช้คำสั่งเครือข่าย Docker เพื่อแก้ไขปัญหาด้านเครือข่าย.

8-ปรับขนาดแอปพลิเคชันของคุณ

สำหรับโครงการที่ซับซ้อนมากขึ้นซึ่งต้องการทรัพยากรเพิ่มเติมหรือการปรับขนาดแนวนอน/แนวตั้ง ให้พิจารณาอัปเกรดแผน Back4app Containers ของคุณเพื่อรองรับการเข้าชมและโหลดที่เพิ่มขึ้น.

9-แอปพลิเคชันตัวอย่าง

สำหรับโครงการแอปพลิเคชัน Laravel ตัวอย่างคุณสามารถไปที่ : https://github.com/templates-back4app/containers-php-laravel-sample