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

การใช้งาน Container App ด้วย NextJS

20min

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

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

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

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

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

ก. โครงสร้างโปรเจกต์: ตรวจสอบให้แน่ใจว่าแอปพลิเคชัน Next.js ของคุณมีโครงสร้างไดเรกทอรีที่เหมาะสม โดยมีไฟล์และโฟลเดอร์ที่จำเป็นทั้งหมด เช่น pages, public, components, และ styles, จัดระเบียบอย่างเหมาะสม จุดเริ่มต้นหลักสำหรับแอปพลิเคชันของคุณควรเป็น pages/index.js หรือ pages/index.jsx ไฟล์.

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

c. กระบวนการสร้าง: สำหรับโครงการที่ซับซ้อนมากขึ้นซึ่งเกี่ยวข้องกับกระบวนการสร้าง ให้แน่ใจว่าสคริปต์และการกำหนดค่าการสร้างของคุณ (เช่น Webpack, Babel หรือ Next.js) ถูกตั้งค่าอย่างถูกต้อง คุณควรสามารถเรียกใช้กระบวนการสร้างในเครื่องได้โดยไม่มีปัญหา.

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

e. การตั้งค่าเซิร์ฟเวอร์ (ถ้าใช้ได้): หากแอปพลิเคชัน Next.js ของคุณรวมถึงเซิร์ฟเวอร์ที่กำหนดเอง (เช่น Express) ให้แน่ใจว่ามันถูกตั้งค่าและกำหนดค่าอย่างถูกต้องเพื่อให้บริการแอปพลิเคชัน Next.js ของคุณ ทดสอบเซิร์ฟเวอร์ของคุณในเครื่องเพื่อให้แน่ใจว่ามันทำงานตามที่คาดหวัง.

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

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

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

2-การสร้าง Docker:

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

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

2-กำหนดภาพพื้นฐาน: เริ่ม Dockerfile โดยการระบุภาพพื้นฐานโดยใช้คำสั่ง FROM สำหรับแอปพลิเคชัน Next.js ทั่วไป ภาพพื้นฐานควรเป็นภาพ Node.js เช่น node:14 หรือ node:16.

Dockerfile


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

Dockerfile


4-คัดลอก package.json และ package-lock.json: คัดลอกไฟล์ package.json และ package-lock.json จากเครื่องของคุณไปยัง Docker container โดยใช้คำสั่ง COPY ไฟล์เหล่านี้จำเป็นสำหรับการติดตั้งความต้องการของแอปพลิเคชันของคุณ.

Dockerfile


5-ติดตั้ง dependencies: ใช้คำสั่ง RUN เพื่อติดตั้ง dependencies ของแอปพลิเคชันของคุณจากไฟล์ package.json โดยทั่วไปจะทำโดยใช้ npm ci ซึ่งจะติดตั้งเวอร์ชัน dependencies ที่ระบุในไฟล์ package-lock.json อย่างแม่นยำ.

Dockerfile


6-คัดลอกไฟล์โปรเจกต์ที่เหลือ: ใช้คำสั่ง COPY อีกครั้งเพื่อคัดลอกไฟล์และโฟลเดอร์ที่เหลือจากเครื่องของคุณไปยัง Docker container.

Dockerfile


7-สร้างแอปพลิเคชัน Next.js: เพิ่มคำสั่ง RUN เพื่อสร้างแอปพลิเคชัน Next.js ของคุณโดยใช้สคริปต์การสร้างของคุณ โดยทั่วไปคือ npm run build ซึ่งจะสร้างเวอร์ชันที่พร้อมสำหรับการผลิตของแอปพลิเคชัน Next.js ของคุณในโฟลเดอร์ .next.

Dockerfile


8-กำหนดค่าเซิร์ฟเวอร์: คุณต้องการเซิร์ฟเวอร์เพื่อให้บริการแอปพลิเคชัน Next.js ที่คุณสร้างขึ้น ตัวเลือกทั่วไปคือเซิร์ฟเวอร์ Next.js ที่ติดตั้งมาแล้ว ก่อนอื่นให้ติดตั้งเซิร์ฟเวอร์นี้ทั่วไประหว่าง Docker container โดยใช้คำสั่ง RUN:

Dockerfile


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

Dockerfile


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

Dockerfile


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

Dockerfile


ตัวอย่าง Dockerfile อื่น ๆ ที่คุณสามารถใช้เป็นข้อมูลอ้างอิง:

ตัวอย่างที่ 1: การใช้เซิร์ฟเวอร์ Nginx

หากคุณต้องการใช้เซิร์ฟเวอร์ Nginx เพื่อให้บริการแอปพลิเคชัน Next.js ของคุณ คุณสามารถสร้าง Dockerfile แบบหลายขั้นตอน ในกรณีนี้ คุณจะต้องสร้างแอปพลิเคชัน Next.js ก่อนแล้วจึงคัดลอกไฟล์ที่สร้างขึ้นไปยังเซิร์ฟเวอร์ Nginx.

Dockerfile


โปรดสร้างไฟล์ nginx.conf ที่เหมาะสมเพื่อกำหนดค่าเซิร์ฟเวอร์ Nginx อย่างถูกต้อง.

ตัวอย่างที่ 2: การใช้เซิร์ฟเวอร์ที่กำหนดเอง

หากคุณมีเซิร์ฟเวอร์ที่กำหนดเองสำหรับแอปพลิเคชัน Next.js ของคุณ คุณสามารถปรับแต่ง Dockerfile ตามนั้น นี่คือตัวอย่างการใช้ไฟล์ server.js ที่กำหนดเอง:

Dockerfile


ในตัวอย่างนี้ เซิร์ฟเวอร์ที่กำหนดเองจะเริ่มต้นด้วยคำสั่ง node server.js แทนที่จะใช้เซิร์ฟเวอร์ Next.js.

3-สร้างและรัน Docker container

หลังจากสร้าง Dockerfile แล้ว คุณสามารถสร้างภาพ Docker และรัน container จากมัน ใช้คำสั่งต่อไปนี้เพื่อสร้างและรัน container:

Text


แทนที่ "your-image-name" ด้วยชื่อสำหรับภาพ Docker ของคุณ.

เมื่อ container กำลังทำงาน คุณสามารถเข้าถึงแอปพลิเคชัน Next.js ของคุณที่ http://localhost:3000 ในเว็บเบราว์เซอร์ของคุณ.

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

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

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

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

docker build -t your-app-name .

เรียกใช้ Docker container บนเครื่องของคุณ:

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

docker run -p 3000:3000 your-app-name

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

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

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

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

Text


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

หากแอปพลิเคชัน Next.js ของคุณใช้การเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR) ให้ตรวจสอบให้แน่ใจว่าการตั้งค่า SSR ของคุณถูกกำหนดค่าอย่างถูกต้องใน Dockerfile ของคุณและเริ่มแอปพลิเคชันของคุณโดยใช้จุดเริ่มต้นที่ถูกต้อง.

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

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

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

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