คู่มือภาษาและกรอบงาน
การปรับใช้ Container สำหรับแอป Django
13 นาที
back4app containers เป็นแพลตฟอร์มที่ทรงพลังสำหรับการโฮสต์แอปพลิเคชัน django ด้วยความสามารถในการปรับใช้แอป django ที่ใช้ docker โดยอัตโนมัติ คุณสามารถเริ่มต้นโปรเจกต์ของคุณในสภาพแวดล้อมที่สามารถปรับขนาดได้และยืดหยุ่นได้อย่างง่ายดาย ในคู่มือนี้ เราจะพาคุณไปผ่านกระบวนการเตรียมและปรับใช้แอปพลิเคชัน django ของคุณบน back4app containers ในคู่มือที่ครอบคลุมนี้ เราจะพาคุณไปผ่านกระบวนการเตรียมและปรับใช้แอปพลิเคชัน django ของคุณบน back4app containers โดยครอบคลุมทุกอย่างตั้งแต่โปรเจกต์ง่ายๆ ไปจนถึงการตั้งค่าที่ซับซ้อนมากขึ้น หากคุณมีคำถามหรือความคิดเห็นใดๆ โปรดเข้าร่วมการสนทนาในช่อง #containers บน back4app community บน slack สำหรับการสนทนาที่เฉพาะเจาะจงเกี่ยวกับ django บน back4app containers คุณยังสามารถติดต่อเราที่ community\@back4app com ได้ตลอดเวลา หากคุณต้องการตรวจสอบตัวอย่างโปรเจกต์ django ที่ทำงานได้บน back4app containers สามารถไปที่ https //github com/templates back4app/containers python flask sample 1 เตรียมแอปพลิเคชัน django ของคุณ ตรวจสอบให้แน่ใจว่าแอปพลิเคชัน django ของคุณมีโครงสร้างที่เหมาะสม และไฟล์ที่จำเป็นทั้งหมด รวมถึงเทมเพลตและไฟล์สถิต ถูกจัดระเบียบในไดเรกทอรีโปรเจกต์ สำหรับโปรเจกต์ที่ซับซ้อนมากขึ้น ให้แน่ใจว่าคุณมีการตั้งค่าแอปแฟคตอรีที่เหมาะสมและปฏิบัติตามแนวทางที่ดีที่สุดของ django 2 สร้างไฟล์ requirements txt ระบุรายการความต้องการทั้งหมดและเวอร์ชันของพวกเขาในไฟล์ requirements txt ไฟล์นี้จะถูกใช้โดย dockerfile เพื่อติดตั้งแพ็คเกจที่จำเป็นเมื่อสร้างภาพ docker นี่คือตัวอย่าง requirements txt สำหรับแอปพลิเคชัน django รวมถึงความต้องการทั่วไปบางประการที่คุณอาจใช้ในโครงการต่างๆ คุณสามารถเพิ่มหรือลบแพ็คเกจตามที่จำเป็นสำหรับแอปพลิเคชันเฉพาะของคุณ requirements txt django==3 2 10 gunicorn==20 1 0 psycopg2 binary==2 9 1 djangorestframework==3 12 4 django cors headers==3 9 0 django environ==0 4 5 django extensions==3 1 3 django filter==21 1 django rest auth==0 9 5 django allauth==0 47 0 requests==2 27 1 3 สร้าง dockerfile เขียน dockerfile เพื่อกำหนดภาพ docker ของแอปพลิเคชันของคุณ ตรวจสอบให้แน่ใจว่าใช้ภาพพื้นฐานที่เหมาะสม (เช่น python 3 x slim) ติดตั้งความต้องการจากไฟล์ requirements txt คัดลอกไฟล์โครงการของคุณ เปิดพอร์ตที่ถูกต้อง และระบุคำสั่งที่เหมาะสมเพื่อเริ่มแอปพลิเคชัน django ของคุณ (เช่น ใช้ gunicorn หรือ uwsgi) ตัวอย่างที่ 1 แอปพลิเคชัน django พื้นฐานที่ใช้ gunicorn dockerfile นี้ใช้สำหรับแอปพลิเคชัน django ที่เรียบง่ายโดยใช้ gunicorn เป็นเซิร์ฟเวอร์ wsgi มันติดตั้งแพ็คเกจที่จำเป็นจากไฟล์ requirements txt คัดลอกไฟล์โครงการ และเปิดพอร์ต 8000 สำหรับเซิร์ฟเวอร์ gunicorn cmd ระบุคำสั่งเพื่อเริ่มเซิร์ฟเวอร์ gunicorn โดยผูกกับ 0 0 0 0 8000 \# 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 8000 \# command to start the server cmd \["gunicorn", " bind", "0 0 0 0 8000", "myproject wsgi"] ตัวอย่างที่ 2 แอปพลิเคชัน django ที่ใช้ uwsgi และ nginx dockerfile นี้สำหรับแอปพลิเคชัน django ที่ซับซ้อนมากขึ้นซึ่งใช้ uwsgi เป็นเซิร์ฟเวอร์ wsgi และ nginx เป็นเซิร์ฟเวอร์พร็อกซีย้อนกลับ มันติดตั้งความต้องการในการสร้างสำหรับ uwsgi และ nginx จากนั้นติดตั้งแพ็คเกจเหล่านั้นพร้อมกับ uwsgi โดยใช้ pip จากนั้นคัดลอกไฟล์โปรเจกต์และไฟล์ requirements txt และเปิดเผยพอร์ต 8000 สำหรับเซิร์ฟเวอร์ uwsgi cmd ระบุคำสั่งในการเริ่มต้น uwsgi โดยใช้ไฟล์การกำหนดค่าที่แยกต่างหากชื่อ "myproject uwsgi ini" dockerfile ยังตั้งค่า nginx โดยการลบไฟล์การกำหนดค่าเริ่มต้น คัดลอกไฟล์การกำหนดค่า nginx ที่กำหนดเองชื่อ "myproject nginx conf" ไปยังไดเรกทอรีที่เหมาะสม และสร้าง symlink เพื่อเปิดใช้งานการกำหนดค่า ไฟล์การกำหนดค่า nginx ระบุว่า nginx ควรฟังที่พอร์ต 8000 และพร็อกซีคำขอไปยังเซิร์ฟเวอร์ uwsgi ที่ทำงานอยู่ในคอนเทนเนอร์ docker เดียวกัน \# 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 \\ libssl dev \\ libpcre3 dev \\ curl \\ && rm rf /var/lib/apt/lists/ \# install uwsgi and nginx run pip install uwsgi run apt get update && apt get install y no install recommends nginx \# configure nginx run rm /etc/nginx/sites enabled/default copy myproject nginx conf /etc/nginx/sites available/ run ln s /etc/nginx/sites available/myproject nginx conf /etc/nginx/sites enabled/ \# 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 8000 \# start uwsgi cmd \["uwsgi", " ini", "/app/myproject uwsgi ini"] โปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยน "myproject" เป็นชื่อโปรเจกต์จริงของคุณใน dockerfiles นอกจากนี้ สำหรับการตั้งค่า uwsgi และ nginx คุณต้องสร้างไฟล์ "myproject nginx conf" และไฟล์ "myproject uwsgi ini" ในไดเรกทอรีโปรเจกต์ของคุณ ซึ่งมีการกำหนดค่าที่เหมาะสมสำหรับ nginx และ uwsgi 4 ทดสอบแอปพลิเคชันของคุณในเครื่อง หลังจากสร้าง dockerfile ของคุณแล้ว คุณสามารถทดสอบแอปพลิเคชัน django ของคุณในเครื่องก่อนที่จะนำไปใช้งานใน back4app containers นี่เป็นขั้นตอนที่สำคัญเพื่อให้แน่ใจว่าทุกอย่างทำงานตามที่คาดหวังและหลีกเลี่ยงปัญหาหรือข้อผิดพลาดระหว่างการนำไปใช้งาน โดยการทดสอบแอปพลิเคชันของคุณในเครื่อง คุณสามารถจับปัญหาหรือข้อผิดพลาดใด ๆ ก่อนที่จะนำไปใช้งานใน back4app containers หากคุณพบปัญหาใด ๆ ให้แน่ใจว่าจัดการกับมันก่อนที่จะไปยังขั้นตอนถัดไป docker build t your app name docker run p 8080 8080 your app name 5 ผลักดันโปรเจกต์ของคุณไปยัง git repository สร้าง gitignore เพื่อยกเว้นไฟล์ที่ไม่จำเป็นหรือไฟล์ที่ละเอียดอ่อนจาก repository ของคุณ (เช่น, pycache , env , pyc , เป็นต้น) เริ่มต้น git repository, คอมมิตไฟล์โปรเจกต์ของคุณ, และผลักดันไปยัง remote repository (เช่น, บน github) 6 ปรับใช้แอปพลิเคชันของคุณบน back4app containers หลังจากสร้างบัญชี back4app ของคุณแล้ว คุณสามารถทำตามขั้นตอนที่ระบุในเอกสาร 1 เชื่อมต่อ github repo ของคุณกับ back4app 2 เตรียมโปรเจกต์ของคุณสำหรับการปรับใช้ โดยสรุป คอนเทนเนอร์จะปฏิบัติตามคำแนะนำที่ระบุใน dockerfile ของคุณและเริ่มสร้างแอปของคุณ 7 ติดตามการปรับใช้ ติดตามบันทึกการปรับใช้และสถานะบนแดชบอร์ด back4app containers แก้ไขข้อผิดพลาดหรือปัญหาที่เกิดขึ้นระหว่างการปรับใช้ ในกรณีของโครงการที่ซับซ้อนมากขึ้น ให้แน่ใจว่าบริการที่จำเป็นทั้งหมด (เช่น ฐานข้อมูลหรือ api ภายนอก) ได้รับการกำหนดค่าและเข้าถึงได้อย่างถูกต้อง สังเกตว่าคุณยังมีส่วนที่เรียกว่า logs ซึ่งแสดงรายการบันทึกที่กำลังทำงานสำหรับแอปของคุณและยังสำคัญที่จะต้องติดตามเพื่อดูว่าคุณมีปัญหาใด ๆ กับแอปของคุณหรือไม่ 8 การแก้ไขปัญหา ข้อผิดพลาดทั่วไปในการปรับใช้มีการระบุไว้ ที่นี่ ข้อผิดพลาดทั่วไปอื่น ๆ ที่อาจเกิดขึ้นเมื่อปรับใช้แอปพลิเคชัน flask ได้แก่ การกำหนดค่าฮอสต์ไม่ถูกต้อง แอปพลิเคชัน django ควรได้รับการกำหนดค่าให้ทำงานบนโฮสต์ 0 0 0 0 เมื่อปรับใช้บน back4app containers หากแอปพลิเคชันของคุณใช้ localhost หรือ 127 0 0 1 , อาจไม่สามารถเข้าถึงได้จากภายนอก ตรวจสอบให้แน่ใจว่าไฟล์การตั้งค่า django ของคุณ ( settings py ) มีบรรทัดต่อไปนี้ allowed hosts = \[' '] หากแอปพลิเคชันของคุณยังไม่สามารถเข้าถึงได้ ให้ตรวจสอบ dockerfile ของคุณเพื่อให้แน่ใจว่าพอร์ตที่ถูกต้องถูกเปิดเผย (เช่น expose 8000 สำหรับพอร์ต 8000) ความไม่เข้ากันหรือการพึ่งพาที่ขาดหายไป ตรวจสอบให้แน่ใจว่าการพึ่งพาที่จำเป็นทั้งหมดถูกระบุไว้ใน requirements txt ไฟล์และเวอร์ชันของพวกมันเข้ากันได้กับกันและกับโค้ดแอปพลิเคชันของคุณ การพึ่งพาที่ขาดหายไปหรือไม่เข้ากันอาจทำให้เกิดข้อผิดพลาดในระหว่างการทำงาน ตรวจสอบให้แน่ใจว่าการพึ่งพาที่จำเป็นทั้งหมดถูกติดตั้งในคอนเทนเนอร์ docker ของคุณโดยการรันคำสั่ง docker run พร้อมกับธง it และเปิดเชลล์ภายในคอนเทนเนอร์ docker run it myproject container /bin/bash เมื่ออยู่ภายในคอนเทนเนอร์แล้ว ให้ตรวจสอบว่าการพึ่งพาที่จำเป็นทั้งหมดถูกติดตั้งโดยใช้ pip list หากการพึ่งพาขาดหายไป ให้ติดตั้งโดยใช้ pip install \<dependency> ปัญหาการเชื่อมต่อฐานข้อมูล หากแอปพลิเคชัน django ของคุณพึ่งพาฐานข้อมูล ให้ตรวจสอบให้แน่ใจว่าสตริงการเชื่อมต่อและข้อมูลประจำตัวถูกตั้งค่าอย่างถูกต้องในการกำหนดค่าของแอปพลิเคชัน นอกจากนี้ ให้ตรวจสอบว่าฐานข้อมูลสามารถเข้าถึงได้จากสภาพแวดล้อมของ back4app containers ตรวจสอบไฟล์การตั้งค่า django ของคุณ ( settings py ) เพื่อให้แน่ใจว่าการกำหนดค่าฐานข้อมูลถูกต้อง คุณอาจต้องระบุโฮสต์ฐานข้อมูล พอร์ต ชื่อ ผู้ใช้ และรหัสผ่านขึ้นอยู่กับการกำหนดค่าของคุณ ตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ docker ของคุณสามารถเข้าถึงฐานข้อมูลได้โดยการตรวจสอบว่าฐานข้อมูลสามารถเข้าถึงได้จากภายในคอนเทนเนอร์ คุณสามารถทำได้โดยการเปิดเชลล์ภายในคอนเทนเนอร์ ( docker run it myproject container /bin/bash ) และใช้ ping หรือ telnet เพื่อติดต่อกับฐานข้อมูล แอปพลิเคชันล้มเหลวหรือข้อยกเว้นที่ไม่ได้จัดการ ข้อยกเว้นที่ไม่ได้จัดการหรือการล่มในโค้ดแอปพลิเคชัน django ของคุณอาจทำให้การปรับใช้ล้มเหลวหรือพฤติกรรมที่ไม่คาดคิด ตรวจสอบบันทึกแอปพลิเคชันของคุณสำหรับข้อความแสดงข้อผิดพลาดใด ๆ และแก้ไขปัญหาใด ๆ ในโค้ดของคุณ ตรวจสอบบันทึกของคอนเทนเนอร์โดยการรัน docker logs myproject container เพื่อดูว่ามีข้อผิดพลาดหรือข้อยกเว้นใด ๆ ที่ถูกโยนออกมาหรือไม่ ใช้เครื่องมือเช่น sentry เพื่อติดตามและตรวจสอบข้อผิดพลาดในแอปพลิเคชันของคุณ เซิร์ฟเวอร์ wsgi ที่กำหนดค่าไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ wsgi ของคุณ (เช่น gunicorn หรือ uwsgi) ถูกกำหนดค่าอย่างถูกต้องใน dockerfile ของคุณและเริ่มแอปพลิเคชัน django ของคุณโดยใช้จุดเริ่มต้นที่ถูกต้อง (เช่น myproject wsgi\ application ) ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ที่ถูกต้องถูกติดตั้งและระบุเป็นความต้องการใน requirements txt ไฟล์ ตัวแปรสภาพแวดล้อมหรือการกำหนดค่าที่ไม่ถูกต้อง ตรวจสอบว่าแอปพลิเคชันของคุณขึ้นอยู่กับตัวแปรสภาพแวดล้อมหรือไฟล์การกำหนดค่าที่เฉพาะเจาะจงหรือไม่ และตรวจสอบให้แน่ใจว่าตั้งค่าอย่างถูกต้องในสภาพแวดล้อมของ back4app containers ตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นใน dockerfile ของคุณโดยใช้คำสั่ง env ตรวจสอบให้แน่ใจว่าไฟล์การกำหนดค่าที่แอปพลิเคชันของคุณต้องการถูกติดตั้งอย่างถูกต้องเป็นโวลุ่มในคอนเทนเนอร์ docker หากคุณพบปัญหาอื่น ๆ ขณะปรับใช้แอปพลิเคชัน django ของคุณบน back4app containers โปรดติดต่อเราที่ community\@back4app com 9 ปรับขนาดแอปพลิเคชันของคุณ สำหรับโครงการที่ซับซ้อนมากขึ้นซึ่งต้องการทรัพยากรเพิ่มเติมหรือการปรับขนาดแนวนอน/แนวตั้ง ให้พิจารณาอัปเกรดแผน back4app containers ของคุณเพื่อจัดการกับการจราจรและโหลดที่เพิ่มขึ้น 10 แอปพลิเคชันตัวอย่าง สำหรับโครงการแอปพลิเคชัน django ตัวอย่างคุณสามารถไปที่ https //github com/templates back4app/containers python django https //github com/templates back4app/containers python django