คู่มือภาษาและกรอบงาน
รันแอป Flask ภายใต้ Docker อย่างง่ายดาย
12 นาที
back4app containers เป็นแพลตฟอร์มที่สมบูรณ์แบบสำหรับการโฮสต์แอปพลิเคชัน flask ของคุณ ด้วยความสามารถในการปรับใช้แอป flask ที่ทำเป็น docker โดยอัตโนมัติ คุณสามารถเปิดตัวโปรเจกต์ของคุณในสภาพแวดล้อมที่สามารถปรับขนาดได้และยืดหยุ่นได้อย่างง่ายดาย ในคู่มือนี้ เราจะพาคุณไปทำความเข้าใจขั้นตอนการเตรียมและปรับใช้แอปพลิเคชัน flask ของคุณบน back4app containers โดยครอบคลุมทุกอย่างตั้งแต่โปรเจกต์ง่ายๆ ไปจนถึงการตั้งค่าที่ซับซ้อนมากขึ้น หากคุณมีคำถามหรือความคิดเห็นใดๆ สามารถเข้าร่วมการสนทนาในช่อง #containers บน back4app community บน slack สำหรับการอภิปรายที่เฉพาะเจาะจงเกี่ยวกับ flask บน back4app containers คุณยังสามารถติดต่อเราที่ community\@back4app com ได้ตลอดเวลา หากคุณต้องการตรวจสอบตัวอย่างโปรเจกต์ flask ที่ทำงานได้บน back4app containers สามารถไปที่ https //github com/templates back4app/containers python flask sample https //github com/templates back4app/containers python flask sample 1 เตรียมแอปพลิเคชัน flask ของคุณ ตรวจสอบให้แน่ใจว่าแอปพลิเคชัน flask ของคุณมีโครงสร้างที่เหมาะสมและไฟล์ที่จำเป็นทั้งหมด รวมถึงเทมเพลตและไฟล์สถิต ถูกจัดระเบียบในไดเรกทอรีโปรเจกต์ สำหรับโปรเจกต์ที่ซับซ้อนมากขึ้น ให้แน่ใจว่าคุณมีการตั้งค่า app factory ที่เหมาะสมและปฏิบัติตามแนวทางที่ดีที่สุดของ flask 2 สร้างไฟล์ requirements txt ระบุการพึ่งพาทั้งหมดที่จำเป็นและเวอร์ชันของพวกเขาในไฟล์ requirements txt ไฟล์นี้จะถูกใช้โดย dockerfile เพื่อติดตั้งแพ็คเกจที่จำเป็นเมื่อสร้างภาพ docker นี่คือตัวอย่างไฟล์ requirements txt สำหรับแอปพลิเคชัน flask รวมถึงการพึ่งพาทั่วไปบางอย่างที่คุณอาจใช้ในโครงการต่างๆ คุณสามารถเพิ่มหรือลบแพ็คเกจตามที่จำเป็นสำหรับแอปพลิเคชันเฉพาะของคุณ requirements txt flask==2 1 1 gunicorn==20 1 0 werkzeug==2 1 1 jinja2==3 1 0 markupsafe==2 1 1 itsdangerous==2 1 1 click==8 1 2 sqlalchemy==1 4 29 flask sqlalchemy==2 5 1 flask migrate==3 1 1 flask login==0 5 0 flask wtf==1 0 3 wtforms==3 0 2 flask cors==3 1 1 flask mail==0 9 1 flask restful==0 3 9 flask script==2 0 6 requests==2 27 1 3 สร้าง dockerfile เขียน dockerfile เพื่อกำหนดภาพ docker ของแอปพลิเคชันของคุณ ตรวจสอบให้แน่ใจว่าใช้ภาพพื้นฐานที่เหมาะสม (เช่น python 3 x slim ), ติดตั้งการพึ่งพาจากไฟล์ requirements txt คัดลอกไฟล์โปรเจกต์ของคุณ เปิดพอร์ตที่ถูกต้อง และระบุคำสั่งที่เหมาะสมเพื่อเริ่มแอปพลิเคชัน flask ของคุณ (เช่น การใช้ gunicorn ) ตัวอย่าง 1 แอปพลิเคชัน flask พื้นฐาน dockerfile นี้สำหรับแอปพลิเคชัน flask ที่เรียบง่ายโดยใช้ gunicorn เป็นเซิร์ฟเวอร์ wsgi dockerfilecopy code# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# command to start the server cmd \["gunicorn", " b", "0 0 0 0 8080", "app\ app"] ตัวอย่างที่ 2 แอปพลิเคชัน flask กับ waitress (เซิร์ฟเวอร์ wsgi ทางเลือก) dockerfile นี้ใช้ waitress ซึ่งเป็นเซิร์ฟเวอร์ wsgi ทางเลือกที่เหมาะสำหรับสภาพแวดล้อมการผลิตและสามารถใช้แทน gunicorn ได้ dockerfilecopy code# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# command to start the server cmd \["waitress serve", " host=0 0 0 0", " port=8080", "app\ app"] อย่าลืมเพิ่ม waitress ลงใน requirements txt ของคุณ ตัวอย่างที่ 3 แอปพลิเคชัน flask กับ gunicorn และการปรับแต่ง worker dockerfile นี้ใช้ gunicorn พร้อมการปรับแต่ง worker เพื่อประสิทธิภาพที่ดียิ่งขึ้น โดยปรับจำนวนกระบวนการ worker ของ gunicorn ตามจำนวน cpu cores ที่มี dockerfilecopy code# base image from python 3 9 slim \# install build dependencies and curl run apt get update && apt get install y no install recommends \\ build essential \\ curl \\ && rm rf /var/lib/apt/lists/ \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# calculate the number of worker processes based on the number of cpu cores cmd \["sh", " c", "gunicorn b 0 0 0 0 8080 workers $(($(nproc all) 2 + 1)) app\ app"] 4 ทดสอบแอปพลิเคชันของคุณในเครื่อง สร้างและรันภาพ docker ในเครื่องเพื่อให้แน่ใจว่าแอปพลิเคชัน flask ของคุณทำงานตามที่คาดหวัง แก้ไขปัญหาหรือข้อผิดพลาดก่อนที่จะนำไปใช้งานใน back4app containers docker build t your app name docker run p 8080 8080 your app name 5 ผลักดันโปรเจกต์ของคุณไปยังที่เก็บ git สร้าง gitignore ไฟล์เพื่อยกเว้นไฟล์ที่ไม่จำเป็นหรือไฟล์ที่ละเอียดอ่อนจากที่เก็บของคุณ (เช่น, pycache , env , pyc , เป็นต้น) เริ่มต้นที่เก็บ git, คอมมิตไฟล์โปรเจกต์ของคุณ, และผลักดันไปยังที่เก็บระยะไกล (เช่น, บน github) 6 ปรับใช้แอปพลิเคชันของคุณบน back4app containers หลังจากสร้างบัญชี back4app ของคุณแล้ว คุณสามารถทำตามขั้นตอนที่ระบุไว้ในเอกสาร 1 เชื่อมต่อ repo github ของคุณกับ back4app 2 เตรียมโปรเจกต์ของคุณสำหรับการปรับใช้ โดยสรุป คอนเทนเนอร์จะปฏิบัติตามคำแนะนำที่ระบุไว้ใน dockerfile ของคุณและเริ่มสร้างแอปของคุณ 7 ติดตามการปรับใช้ ติดตามบันทึกการปรับใช้และสถานะบนแดชบอร์ด back4app containers แก้ไขข้อผิดพลาดหรือปัญหาที่เกิดขึ้นระหว่างการปรับใช้ ในกรณีของโปรเจกต์ที่ซับซ้อนมากขึ้น ให้แน่ใจว่าบริการที่จำเป็นทั้งหมด (เช่น ฐานข้อมูลหรือ api ภายนอก) ได้รับการกำหนดค่าและเข้าถึงได้อย่างถูกต้อง โปรดทราบว่าคุณยังมีส่วนที่เรียกว่า logs ซึ่งแสดงรายการบันทึกการทำงานทั้งหมดสำหรับแอปของคุณ และยังสำคัญที่จะต้องติดตามเพื่อดูว่าคุณมีปัญหาใด ๆ กับแอปของคุณหรือไม่ 8 การแก้ไขปัญหา ข้อผิดพลาดในการปรับใช้ทั่วไปมีการระบุไว้ ที่นี่ ข้อผิดพลาดทั่วไปอื่น ๆ ที่อาจเกิดขึ้นเมื่อปรับใช้แอปพลิเคชัน flask ได้แก่ การกำหนดค่าผู้ให้บริการที่ไม่ถูกต้อง แอปพลิเคชัน flask ควรได้รับการกำหนดค่าให้ทำงานบนโฮสต์ 0 0 0 0 เมื่อปรับใช้บน back4app containers หากแอปพลิเคชันของคุณใช้ localhost หรือ 127 0 0 1 อาจไม่สามารถเข้าถึงได้จากภายนอก การพึ่งพาที่ไม่เข้ากันหรือขาดหายไป ตรวจสอบให้แน่ใจว่าข้อกำหนดทั้งหมดที่จำเป็นถูกระบุในไฟล์ requirements txt ของคุณและเวอร์ชันของพวกเขาสามารถทำงานร่วมกันได้กับโค้ดแอปพลิเคชันของคุณ ข้อกำหนดที่ขาดหายไปหรือไม่สามารถทำงานร่วมกันได้อาจทำให้เกิดข้อผิดพลาดในระหว่างการทำงาน ปัญหาการเชื่อมต่อฐานข้อมูล หากแอปพลิเคชัน flask ของคุณพึ่งพาฐานข้อมูล ให้ตรวจสอบให้แน่ใจว่าสตริงการเชื่อมต่อและข้อมูลประจำตัวถูกตั้งค่าอย่างถูกต้องในการกำหนดค่าของแอปพลิเคชัน นอกจากนี้ให้ตรวจสอบว่าฐานข้อมูลสามารถเข้าถึงได้จากสภาพแวดล้อม back4app containers แอปพลิเคชันล่มหรือข้อยกเว้นที่ไม่ได้จัดการ ข้อยกเว้นที่ไม่ได้จัดการหรือการล่มในโค้ดแอปพลิเคชัน flask ของคุณอาจทำให้การปรับใช้ล้มเหลวหรือพฤติกรรมที่ไม่คาดคิด ตรวจสอบบันทึกแอปพลิเคชันของคุณสำหรับข้อความแสดงข้อผิดพลาดใด ๆ และแก้ไขปัญหาในโค้ดของคุณ เซิร์ฟเวอร์ wsgi ที่กำหนดค่าไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ wsgi ของคุณ (เช่น gunicorn หรือ waitress) ถูกกำหนดค่าอย่างถูกต้องใน dockerfile ของคุณและเริ่มแอปพลิเคชัน flask ของคุณโดยใช้จุดเริ่มต้นที่ถูกต้อง (เช่น app\ app) ตัวแปรสภาพแวดล้อมหรือการกำหนดค่าที่ไม่ถูกต้อง ตรวจสอบว่าแอปพลิเคชันของคุณพึ่งพาตัวแปรสภาพแวดล้อมหรือไฟล์การกำหนดค่าที่เฉพาะเจาะจงหรือไม่ และตรวจสอบให้แน่ใจว่าพวกเขาถูกตั้งค่าอย่างถูกต้องในสภาพแวดล้อม back4app containers 8 ปรับขนาดแอปพลิเคชันของคุณ สำหรับโครงการที่ซับซ้อนมากขึ้นที่ต้องการทรัพยากรเพิ่มเติมหรือการปรับขนาดแนวนอน/แนวตั้ง ให้พิจารณาอัปเกรดแผน back4app containers ของคุณเพื่อจัดการกับการจราจรและภาระงานที่เพิ่มขึ้น 9 ตัวอย่างแอปพลิเคชัน สำหรับโครงการแอปพลิเคชัน flask ตัวอย่างคุณสามารถไปที่ https //github com/templates back4app/containers python flask sample https //github com/templates back4app/containers python flask sample