คู่มือภาษาและกรอบงาน
รันแอป Laravel บน Containers อย่างง่าย
29 นาที
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 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 from php 8 1 apache 3 ตั้งค่าไดเรกทอรีการทำงาน ใช้คำสั่ง workdir เพื่อตั้งค่าไดเรกทอรีการทำงานสำหรับแอปพลิเคชันของคุณภายใน docker container นี่คือที่ที่ไฟล์แอปพลิเคชันของคุณจะถูกเก็บและดำเนินการ workdir /var/www/html 4 คัดลอกไฟล์โปรเจกต์ คัดลอกไฟล์ทั้งหมดจากไดเรกทอรีแอปพลิเคชัน laravel ไปยัง docker container โดยใช้คำสั่ง copy copy 5 ติดตั้ง dependencies ใช้คำสั่ง run เพื่อติดตั้ง dependencies ที่จำเป็นสำหรับแอปพลิเคชัน laravel ของคุณโดยใช้ composer install run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist 6 ตั้งค่าเซิร์ฟเวอร์ apache เปิดใช้งานโมดูล rewrite ของ apache, กำหนดค่าไฟล์ 000 default conf เพื่อรวมการตั้งค่า apache ที่เหมาะสมสำหรับ laravel และตั้งค่าตัวแปรสภาพแวดล้อมของ apache run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public 7 สร้างคีย์แอป laravel laravel ต้องการคีย์แอปเพื่อเข้ารหัสเซสชันผู้ใช้และข้อมูลที่ละเอียดอ่อนอื่นๆ ใช้คำสั่ง run เพื่อสร้างคีย์แอป run php artisan key\ generate 8 สร้างแอปพลิเคชัน laravel เพิ่มคำสั่ง run เพื่อสร้างแอปพลิเคชัน laravel ของคุณโดยใช้สคริปต์การสร้างของคุณ โดยทั่วไปคือ composer dump autoload , php artisan config\ cache , php artisan route\ cache และ php artisan view\ cache run composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache 9 เปิดเผยพอร์ตเซิร์ฟเวอร์ ใช้คำสั่ง expose เพื่อระบุพอร์ตที่เซิร์ฟเวอร์ของคุณจะทำงานภายใน docker container ตัวอย่างเช่น คุณสามารถใช้พอร์ต 80 expose 80 10 เริ่มเซิร์ฟเวอร์ ใช้คำสั่ง cmd เพื่อระบุคำสั่งที่เริ่มเซิร์ฟเวอร์เพื่อให้บริการแอปพลิเคชัน laravel ที่คุณสร้างขึ้น cmd \["apache2 foreground"] dockerfile ที่สมบูรณ์สำหรับแอปพลิเคชัน laravel ปกติควรมีลักษณะดังนี้ \#dockerfile example on running php laravel app using apache web server from php 8 1 apache \# install necessary libraries run apt get update && apt get install y \\ libonig dev \\ libzip dev \# install php extensions run docker php ext install \\ mbstring \\ zip \# copy laravel application copy /var/www/html \# set working directory workdir /var/www/html \# install composer copy from=composer\ latest /usr/bin/composer /usr/bin/composer \# install dependencies run composer install \# change ownership of our applications run chown r www data\ www data /var/www/html run docker php ext install mbstring copy env example env run php artisan key\ generate \# expose port 80 expose 80 \# adjusting apache configurations run a2enmod rewrite copy apache config conf /etc/apache2/sites available/000 default conffrom php 8 1 apache workdir /var/www/html copy run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public run php artisan key\ generate \\ && composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache expose 80 cmd \["apache2 foreground"] 3 ทดสอบโปรเจกต์ของคุณในเครื่อง ก่อนที่จะนำแอปพลิเคชัน laravel ของคุณไปใช้งานบน back4app containers สิ่งสำคัญคือต้องทดสอบในเครื่องโดยใช้ docker ซึ่งจะช่วยให้แน่ใจว่าแอปพลิเคชันของคุณทำงานตามที่คาดหวังและช่วยให้คุณระบุและแก้ไขปัญหาก่อนการนำไปใช้งาน สร้างภาพ docker สำหรับแอปพลิเคชัน laravel ของคุณ ในเทอร์มินัลของคุณ ให้ไปที่ไดเรกทอรีรากของโปรเจกต์ของคุณและรันคำสั่งต่อไปนี้ โดยแทนที่ your app name ด้วยชื่อของแอปพลิเคชันของคุณ รัน docker container ในเครื่อง ถัดไป รันคำสั่งต่อไปนี้เพื่อเริ่ม docker container ในเครื่อง คำสั่งนี้จะแมพพอร์ตที่เปิดเผยของ container (เช่น 80) ไปยังพอร์ตบนเครื่องของคุณ (เช่น 8000) ทดสอบแอปพลิเคชันของคุณ เปิดเว็บเบราว์เซอร์และไปที่ http //localhost 8080 http //localhost 8000/ เพื่อดูแอปพลิเคชัน laravel ของคุณ ตรวจสอบให้แน่ใจว่าทุกอย่างทำงานตามที่คาดหวัง หากคุณพบปัญหาใด ๆ ให้แก้ไขก่อนที่จะไปยังขั้นตอนถัดไป 4 ผลักดันโปรเจกต์ของคุณไปยัง github สร้าง gitignore ไฟล์ในไดเรกทอรีรากของโปรเจกต์ของคุณเพื่อไม่ให้รวมไฟล์ที่ไม่จำเป็นหรือไฟล์ที่ละเอียดอ่อนจากที่เก็บของคุณ (เช่น, vendor , env , node modules , เป็นต้น) เริ่มต้นที่เก็บ git, คอมมิตไฟล์โปรเจกต์ของคุณ และผลักดันไปยังที่เก็บระยะไกล (เช่น, บน github) 5 ปรับใช้แอปพลิเคชันของคุณบน back4app containers หลังจากสร้างบัญชี back4app ของคุณแล้ว คุณสามารถทำตามขั้นตอนที่ระบุไว้ในเอกสาร 1 เชื่อมต่อที่เก็บ github ของคุณกับ back4app https //www back4app com/docs containers/integrate with github 2 เตรียมโปรเจกต์ของคุณสำหรับการปรับใช้ https //www back4app com/docs containers/prepare your deployment โดยสรุป คอนเทนเนอร์จะปฏิบัติตามคำแนะนำที่ระบุไว้ใน dockerfile ของคุณและเริ่มสร้างแอปของคุณ 6 ตรวจสอบการปรับใช้และแก้ไขข้อผิดพลาดที่อาจเกิดขึ้น ติดตามบันทึกการปรับใช้และสถานะบนแดชบอร์ด back4app containers แก้ไขข้อผิดพลาดหรือปัญหาที่เกิดขึ้นระหว่างการปรับใช้ ในกรณีของโปรเจกต์ที่ซับซ้อนมากขึ้น ให้แน่ใจว่าบริการที่จำเป็นทั้งหมด (เช่น ฐานข้อมูลหรือ api ภายนอก) ได้รับการกำหนดค่าและเข้าถึงได้อย่างถูกต้อง 7 การแก้ไขปัญหาทั่วไป ข้อผิดพลาดในการปรับใช้ทั่วไปเมื่อรันแอป laravel บน back4app containers มีการระบุไว้ ที่นี่ https //www back4app com/docs containers/troubleshooting ข้อผิดพลาดทั่วไปอื่น ๆ ที่อาจเกิดขึ้นเมื่อปรับใช้แอปพลิเคชัน 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 servername localhost \<virtualhost 80> documentroot /var/www/html/public \<directory /var/www/html/public> allowoverride all order allow,deny allow from all \</directory> \# log access messages to access log file errorlog /var/log/apache2/access log customlog /var/log/apache2/access log combined \# log error messages to error log file loglevel error errorlog /var/log/apache2/error log \</virtualhost> 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 ปัญหา การตั้งค่า apache ที่ไม่ถูกต้องหรือกำหนดค่าไม่ถูกต้องอาจนำไปสู่ข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด วิธีแก้ไข ตรวจสอบไฟล์กำหนดค่าของ apache ( apache config conf ) อีกครั้งเพื่อให้แน่ใจว่ามันชี้ไปยัง documentroot ของแอปพลิเคชัน laravel อย่างถูกต้องและมีคำสั่ง directory ที่เหมาะสม เปิดใช้งานโมดูล rewrite โดยการรัน run a2enmod rewrite ใน dockerfile นี่เป็นสิ่งจำเป็นสำหรับการทำงานของการกำหนดเส้นทางของ laravel การขาดหรือการพึ่งพาที่ไม่ถูกต้อง ปัญหา หากแอปพลิเคชัน laravel ของคุณมีการพึ่งพาที่หายไปหรือไม่ถูกต้อง อาจส่งผลให้เกิดข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิด วิธีแก้ไข ตรวจสอบไฟล์ composer json เพื่อให้แน่ใจว่ามีการระบุการพึ่งพาที่จำเป็นทั้งหมด รวมถึงเวอร์ชันที่ถูกต้อง รัน composer install เพื่อติดตั้งการพึ่งพาและสร้างไฟล์ composer lock ตรวจสอบให้แน่ใจว่ามีการติดตั้งและเปิดใช้งานส่วนขยาย php ที่จำเป็นใน dockerfile โดยใช้คำสั่ง docker php ext install ปัญหาเกี่ยวกับสิทธิ์ไฟล์ ปัญหา สิทธิ์ไฟล์ที่ไม่ถูกต้องอาจทำให้เกิดปัญหากับการจัดเก็บไฟล์หรือแคชของ laravel วิธีแก้ไข ใช้คำสั่ง 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 python flask sample