ในบทความนี้ ผมจะแบ่งปันประสบการณ์การตั้งค่า CI/CD โดยใช้ Plesk Control Panel และ Github Actions วันนี้เราจะเรียนรู้วิธีปรับใช้โครงการง่ายๆ ด้วยชื่อที่ไม่ซับซ้อน "Helloworld" มันถูกเขียนขึ้นในกรอบ Flask Python โดยมีพนักงาน Celery และส่วนหน้าของ Angular 8
ลิงค์ไปยังที่เก็บ:
ในส่วนแรกของบทความ เราจะพิจารณาโครงการและส่วนต่างๆ ของเรา ในตอนที่สอง เราจะหาวิธีตั้งค่า Plesk และติดตั้งส่วนขยายและส่วนประกอบที่จำเป็น (DB, RabbitMQ, Redis, Docker เป็นต้น)
ในส่วนที่สาม ในที่สุดเราจะเข้าใจวิธีตั้งค่าไปป์ไลน์สำหรับการปรับใช้โครงการของเรากับเซิร์ฟเวอร์ในสภาพแวดล้อม dev และผลิตภัณฑ์ จากนั้นเราจะเปิดไซต์บนเซิร์ฟเวอร์
ใช่ ฉันลืมแนะนำตัว ฉันชื่อ Oleg Borzov เป็นนักพัฒนาฟูลสแตกในทีม CRM สำหรับผู้จัดการสินเชื่อที่อยู่อาศัยที่ Domclick
ภาพรวมโครงการ
ก่อนอื่น มาดูที่เก็บข้อมูลโครงการสองแห่ง - ส่วนหลังและส่วนหน้า - และดูโค้ด
แบ็กเอนด์: ขวด + ขึ้นฉ่าย
สำหรับส่วนหลัง ฉันเลือกกลุ่มที่ค่อนข้างเป็นที่นิยมในหมู่นักพัฒนา Python: Flask framework (สำหรับ API) และ Celery (สำหรับคิวงาน) SQLAchemy ใช้เป็น ORM Alembic ใช้สำหรับการย้ายข้อมูล สำหรับการตรวจสอบ JSON ในที่จับ - Marshmallow
В
/ping
- เพื่อตรวจสอบความพร้อม;- จัดการการลงทะเบียน การอนุญาต การยกเลิกการอนุญาต และการได้รับผู้ใช้ที่ได้รับอนุญาต
- หมายเลขอ้างอิงอีเมลที่ทำให้งานอยู่ในคิวขึ้นฉ่าย
send_mail_task
.
ในโฟลเดอร์
docker
ด้วย Dockerfiles สองไฟล์ (base.dockerfile
เพื่อสร้างภาพฐานที่ไม่ค่อยเปลี่ยนแปลงและDockerfile
สำหรับส่วนประกอบหลัก);.env_files
- ด้วยไฟล์ที่มีตัวแปรสภาพแวดล้อมสำหรับสภาพแวดล้อมที่แตกต่างกัน
มีไฟล์นักเทียบท่าสี่ไฟล์ที่รูทของโปรเจ็กต์:
docker-compose.local.db.yml
ยกระดับฐานข้อมูลท้องถิ่นเพื่อการพัฒนาdocker-compose.local.workers.yml
สำหรับการเลี้ยงดูคนงาน, ฐานข้อมูล, Redis และ RabbitMQ;docker-compose.test.yml
เพื่อเรียกใช้การทดสอบระหว่างการปรับใช้docker-compose.yml
สำหรับการปรับใช้
และโฟลเดอร์สุดท้ายที่เราสนใจ -
deploy.sh
— เปิดตัวการโยกย้ายและการปรับใช้ ทำงานบนเซิร์ฟเวอร์หลังจากสร้างและรันการทดสอบใน Github Actionsrollback.sh
- การย้อนกลับของคอนเทนเนอร์ไปยังชุดประกอบรุ่นก่อนหน้าcurl_tg.sh
- ส่งการแจ้งเตือนการปรับใช้ไปยังโทรเลข
ส่วนหน้าบนเชิงมุม
- หน้าหลักพร้อมแบบฟอร์มสำหรับส่งอีเมลและปุ่มออก
- หน้าเข้าสู่ระบบ
- หน้าลงทะเบียน.
หน้าหลัก ดูนักพรต:
มีสองไฟล์ที่รูท Dockerfile
и docker-compose.yml
เช่นเดียวกับโฟลเดอร์ที่คุ้นเคย .ci-cd
ด้วยสคริปต์น้อยกว่าในที่เก็บด้านหลังเล็กน้อย (ลบสคริปต์สำหรับการเรียกใช้การทดสอบ)
เริ่มโครงการใน Plesk
เริ่มต้นด้วยการตั้งค่า Plesk และสร้างการสมัครสมาชิกสำหรับเว็บไซต์ของเรา
กำลังติดตั้งส่วนขยาย
ใน Plesk เราต้องการส่วนขยายสี่รายการ:
Docker
เพื่อจัดการและแสดงสถานะของคอนเทนเนอร์ในแผงผู้ดูแลระบบ PleskGit
เพื่อกำหนดค่าขั้นตอนการปรับใช้บนเซิร์ฟเวอร์Let's Encrypt
เพื่อสร้าง (และต่ออายุอัตโนมัติ) ใบรับรอง TLS ฟรีFirewall
เพื่อกำหนดค่าการกรองทราฟฟิกขาเข้า
คุณสามารถติดตั้งผ่านแผงผู้ดูแลระบบ Plesk ในส่วนส่วนขยาย:
เราจะไม่พิจารณาการตั้งค่าโดยละเอียดสำหรับส่วนขยาย การตั้งค่าเริ่มต้นจะทำเพื่อวัตถุประสงค์ในการสาธิตของเรา
สร้างการสมัครสมาชิกและไซต์
ต่อไป เราต้องสร้างการสมัครสมาชิกสำหรับเว็บไซต์ helloworld.ru ของเรา และเพิ่มโดเมนย่อย dev.helloworld.ru ที่นั่น
- สร้างการสมัครสมาชิกสำหรับโดเมน helloworld.ru และระบุรหัสผ่านเข้าสู่ระบบสำหรับผู้ใช้ระบบ:
ทำเครื่องหมายที่ช่องด้านล่างของหน้า รักษาความปลอดภัยของโดเมนด้วย Let's Encryptหากเราต้องการตั้งค่า HTTPS สำหรับไซต์: - ถัดไป ในการสมัครสมาชิกนี้ ให้สร้างโดเมนย่อย dev.helloworld.ru (ซึ่งคุณสามารถออกใบรับรอง TLS ได้ฟรี):
การติดตั้งส่วนประกอบเซิร์ฟเวอร์
เรามีเซิร์ฟเวอร์ด้วย OS Debian ยืด 9.12 และติดตั้งแผงควบคุม เพลสก์ ออบซิเดียน 18.0.27.
เราจำเป็นต้องติดตั้งและกำหนดค่าสำหรับโครงการของเรา:
- PostgreSQL (ในกรณีของเรา จะมีเซิร์ฟเวอร์หนึ่งเครื่องที่มีสองฐานข้อมูลสำหรับสภาพแวดล้อม dev และ prod)
- RabbitMQ (เหมือนกัน อินสแตนซ์เดียวกันกับ vhosts ที่แตกต่างกันสำหรับสภาพแวดล้อม)
- อินสแตนซ์ Redis สองรายการ (สำหรับสภาพแวดล้อม dev และ prod)
- Docker Registry (สำหรับพื้นที่จัดเก็บในเครื่องของอิมเมจ Docker ที่สร้างขึ้น)
- UI สำหรับการลงทะเบียนนักเทียบท่า
PostgreSQL
Plesk มาพร้อมกับ PostgreSQL DBMS แล้ว แต่ไม่ใช่เวอร์ชันล่าสุด (ในขณะที่เขียน Plesk Obsidian
มีคำแนะนำโดยละเอียดมากมายสำหรับการติดตั้ง Postgres บน Debian บนเน็ต (
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
เนื่องจาก PostgreSQL มีการตั้งค่าเริ่มต้นค่อนข้างปานกลาง จึงจำเป็นต้องแก้ไขการกำหนดค่า สิ่งนี้จะช่วยเรา /etc/postgresql/12/main/postgresql.conf
ให้กับผู้ที่เสนอ ควรสังเกตที่นี่ว่าเครื่องคิดเลขดังกล่าวไม่ใช่สัญลักษณ์แสดงหัวข้อย่อย และฐานควรได้รับการปรับให้แม่นยำยิ่งขึ้น โดยขึ้นอยู่กับฮาร์ดแวร์ แอปพลิเคชัน และความซับซ้อนในการสืบค้นของคุณ แต่นี่เพียงพอที่จะเริ่มต้น
นอกจากการตั้งค่าที่เสนอโดยเครื่องคิดเลขแล้ว เรายังเปลี่ยนด้วย postgresql.conf
พอร์ตเริ่มต้น 5432 ไปยังพอร์ตอื่น (ในตัวอย่างของเรา - 53983).
หลังจากเปลี่ยนไฟล์คอนฟิกูเรชันแล้ว ให้รีสตาร์ท postgresql-server ด้วยคำสั่ง:
service postgresql restart
เราได้ติดตั้งและกำหนดค่า PostgreSQL แล้ว ตอนนี้เรามาสร้างฐานข้อมูล ผู้ใช้สำหรับสภาพแวดล้อม dev และ prod และให้สิทธิ์แก่ผู้ใช้ในการจัดการฐานข้อมูล:
$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT
RabbitMQ
เรามาติดตั้ง RabbitMQ ซึ่งเป็นนายหน้าข้อความสำหรับ Celery กันเถอะ การติดตั้งบน Debian นั้นค่อนข้างง่าย:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang erlang-nox
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
หลังจากติดตั้งแล้ว เราต้องสร้าง vhostsผู้ใช้ และให้สิทธิ์ที่จำเป็น:
sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"
sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"
Redis
ตอนนี้มาติดตั้งและกำหนดค่าองค์ประกอบสุดท้ายสำหรับแอปพลิเคชันของเรา - Redis มันจะใช้เป็นแบ็กเอนด์สำหรับเก็บผลลัพธ์ของงานคื่นฉ่าย
เราจะเพิ่มคอนเทนเนอร์ Docker สองคอนเทนเนอร์ด้วย Redis สำหรับสภาพแวดล้อม dev และ prod โดยใช้ส่วนขยาย Docker
สำหรับ Plesk
- เราไปที่ Plesk ไปที่ส่วนส่วนขยาย ค้นหาส่วนขยาย Docker และติดตั้ง (เราต้องการเวอร์ชันฟรี):
- ไปที่ส่วนขยายที่ติดตั้ง ค้นหาภาพผ่านการค้นหา
redis bitnami
และติดตั้งเวอร์ชันล่าสุด: - เราไปที่คอนเทนเนอร์ที่ดาวน์โหลดมาและปรับการกำหนดค่า: ระบุพอร์ต, ขนาด RAM ที่จัดสรรสูงสุด, รหัสผ่านในตัวแปรสภาพแวดล้อมและเมานต์โวลุ่ม:
- เราดำเนินการตามขั้นตอนที่ 2-3 สำหรับคอนเทนเนอร์ผลิตภัณฑ์ ในการตั้งค่า เราเปลี่ยนเฉพาะพารามิเตอร์: พอร์ต, รหัสผ่าน, ขนาด RAM และพาธไปยังโฟลเดอร์โวลุ่มบนเซิร์ฟเวอร์:
รีจิสทรีนักเทียบท่า
นอกเหนือจากบริการพื้นฐานแล้ว การใส่ที่เก็บอิมเมจ Docker ของคุณเองไว้บนเซิร์ฟเวอร์ก็เป็นเรื่องดี โชคดีที่ตอนนี้พื้นที่เซิร์ฟเวอร์ค่อนข้างถูก (ถูกกว่าการสมัครสมาชิก DockerHub อย่างแน่นอน) และขั้นตอนการตั้งค่าพื้นที่เก็บข้อมูลส่วนตัวนั้นง่ายมาก
เราต้องการมี:
- ที่เก็บ Docker ที่ป้องกันด้วยรหัสผ่านสามารถเข้าถึงได้บนโดเมนย่อย
https://docker.helloworld.ru ; - UI สำหรับดูรูปภาพในที่เก็บ ดูได้ที่
https://docker-ui.helloworld.ru .
สำหรับสิ่งนี้:
- มาสร้างโดเมนย่อยสองโดเมนใน Plesk ในการสมัครสมาชิกของเรา: docker.helloworld.ru และ docker-ui.helloworld.ru และกำหนดค่าใบรับรอง Let's Encrypt สำหรับโดเมนเหล่านั้น
- เพิ่มไฟล์ไปยังโฟลเดอร์ย่อย docker.helloworld.ru
docker-compose.yml
โดยมีเนื้อหาดังนี้version: "3" services: docker-registry: image: "registry:2" restart: always ports: - "53985:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./.docker-registry.htpasswd:/auth/.htpasswd - ./data:/data docker-registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "53986:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'docker-registry' ENV_DOCKER_REGISTRY_PORT: 5000 links: - 'docker-registry'
- ภายใต้ SSH เราจะสร้างไฟล์ .htpasswd สำหรับการอนุญาตขั้นพื้นฐานในที่เก็บ Docker:
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- รวบรวมและยกคอนเทนเนอร์:
docker-compose up -d
- และเราต้องเปลี่ยนเส้นทาง Nginx ไปยังคอนเทนเนอร์ของเรา สามารถทำได้ผ่าน Plesk
ต้องทำตามขั้นตอนต่อไปนี้สำหรับโดเมนย่อย docker.helloworld.ru และ docker-ui.helloworld.ru:
ในส่วน เครื่องมือ Dev เว็บไซต์ของเราไปที่ กฎพร็อกซีนักเทียบท่า:
และเพิ่มกฎให้กับพร็อกซีทราฟฟิกขาเข้าไปยังคอนเทนเนอร์ของเรา:
- เราตรวจสอบว่าเราสามารถเข้าสู่ระบบคอนเทนเนอร์ของเราจากเครื่องท้องถิ่น:
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
- ตรวจสอบการทำงานของโดเมนย่อย docker-ui.helloworld.ru ด้วย:
เมื่อคุณคลิกที่เรียกดูที่เก็บ เบราว์เซอร์จะแสดงหน้าต่างการอนุญาตซึ่งคุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านสำหรับที่เก็บ หลังจากนั้น เราจะถูกโอนไปยังเพจที่มีรายการที่เก็บ (สำหรับตอนนี้ มันจะว่างเปล่าสำหรับคุณ):
การเปิดพอร์ตใน Plesk Firewall
หลังจากติดตั้งและกำหนดค่าคอมโพเนนต์แล้ว เราจำเป็นต้องเปิดพอร์ตเพื่อให้คอมโพเนนต์สามารถเข้าถึงได้จากคอนเทนเนอร์ Docker และเครือข่ายภายนอก
มาดูวิธีการใช้ส่วนขยายไฟร์วอลล์สำหรับ Plesk ที่เราติดตั้งไว้ก่อนหน้านี้
- ไปที่ เครื่องมือและการตั้งค่า > การตั้งค่า > ไฟร์วอลล์:
- ไปที่ แก้ไขกฎไฟร์วอลล์ของ Plesk > เพิ่มกฎที่กำหนดเอง และเปิดพอร์ต TCP ต่อไปนี้สำหรับซับเน็ต Docker (172.0.0.0 / 8):
แรบบิทMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
สีแดง: 32785, 32786 - เราจะเพิ่มกฎที่จะเปิดพอร์ต PostgreSQL และพาเนลการจัดการ RabbitMQ สู่โลกภายนอก:
- ใช้กฎโดยใช้ปุ่มใช้การเปลี่ยนแปลง:
การตั้งค่า CI/CD ใน Github Actions
มาลงที่ส่วนที่น่าสนใจที่สุด - การตั้งค่าไปป์ไลน์การรวมอย่างต่อเนื่องและส่งมอบโครงการของเราไปยังเซิร์ฟเวอร์
ไปป์ไลน์นี้จะประกอบด้วยสองส่วน:
- สร้างอิมเมจและรันการทดสอบ (สำหรับแบ็กเอนด์) - ที่ฝั่ง Github
- เรียกใช้การย้ายข้อมูล (สำหรับแบ็กเอนด์) และปรับใช้คอนเทนเนอร์ - บนเซิร์ฟเวอร์
ปรับใช้กับ Plesk
มาจัดการกับประเด็นที่สองก่อน (เพราะประเด็นแรกขึ้นอยู่กับมัน)
เราจะกำหนดค่ากระบวนการปรับใช้โดยใช้ส่วนขยาย Git สำหรับ Plesk
พิจารณาตัวอย่างด้วยสภาพแวดล้อม Prod สำหรับที่เก็บแบ็กเอนด์
- เราไปที่การสมัครสมาชิกเว็บไซต์ Helloworld และไปที่ส่วนย่อยของ Git:
- ใส่ลิงค์ไปยังที่เก็บ Github ของเราในช่อง "ที่เก็บ Git ระยะไกล" และเปลี่ยนโฟลเดอร์เริ่มต้น
httpdocs
ไปยังอีกที่หนึ่ง (เช่น/httpdocs/hw_back
): - คัดลอกคีย์สาธารณะ SSH จากขั้นตอนก่อนหน้าและ
เพิ่ม ในการตั้งค่า Github - คลิกตกลงบนหน้าจอในขั้นตอนที่ 2 หลังจากนั้นเราจะถูกนำไปที่หน้าที่เก็บใน Plesk ตอนนี้เราต้องกำหนดค่าที่เก็บที่จะอัปเดตเมื่อคอมมิตไปยังสาขาหลัก ในการทำเช่นนี้ไปที่ การตั้งค่าพื้นที่เก็บข้อมูล และบันทึกมูลค่า
Webhook URL
(เราจะต้องใช้ในภายหลังเมื่อตั้งค่า Github Actions): - ในฟิลด์การดำเนินการบนหน้าจอจากย่อหน้าก่อนหน้า ให้ป้อนสคริปต์เพื่อเริ่มการปรับใช้:
cd {REPOSITORY_ABSOLUTE_PATH} .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
ที่ไหน:
{REPOSITORY_ABSOLUTE_PATH}
- พาธไปยังโฟลเดอร์ prod ของที่เก็บแบ็กเอนด์บนเซิร์ฟเวอร์
{ENV}
- สภาพแวดล้อม (dev / prod) ในกรณีของเราprod
;
{DOCKER_REGISTRY_HOST}
- โฮสต์ของที่เก็บนักเทียบท่าของเรา
{TG_BOT_TOKEN}
— โทเค็นบอทโทรเลข;
{TG_CHAT_ID}
— ID ของแชท/ช่องสำหรับส่งการแจ้งเตือนตัวอย่างสคริปต์:
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/ .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
- เพิ่มผู้ใช้จากการสมัครสมาชิกของเราไปยังกลุ่ม Docker (เพื่อให้สามารถจัดการคอนเทนเนอร์ได้):
sudo usermod -aG docker helloworld_admin
สภาพแวดล้อม dev สำหรับที่เก็บแบ็กเอนด์และส่วนหน้าได้รับการตั้งค่าในลักษณะเดียวกัน
ไปป์ไลน์การปรับใช้ใน Github Actions
เรามาตั้งค่าส่วนแรกของไปป์ไลน์ CI/CD ใน Github Actions กัน
แบ็กเอนด์
ไปป์ไลน์อธิบายไว้ใน
แต่ก่อนที่จะแยกวิเคราะห์ มากรอกตัวแปรลับที่เราต้องการใน Github ก่อน ในการทำเช่นนี้ไปที่ การตั้งค่า -> ความลับ:
DOCKER_REGISTRY
- โฮสต์ของที่เก็บ Docker ของเรา (docker.helloworld.ru);DOCKER_LOGIN
- เข้าสู่ที่เก็บ Docker;DOCKER_PASSWORD
- รหัสผ่านสำหรับมัน;DEPLOY_HOST
— โฮสต์ที่มีแผงควบคุมผู้ดูแลระบบ Plesk (ตัวอย่าง:สวัสดีเวิล์ด.ru : 8443 หรือ123.4.56.78 :8443);DEPLOY_BACK_PROD_TOKEN
- โทเค็นสำหรับการปรับใช้กับที่เก็บผลิตภัณฑ์บนเซิร์ฟเวอร์ (เราได้รับในการปรับใช้ใน Plesk หน้า 4)DEPLOY_BACK_DEV_TOKEN
- โทเค็นสำหรับการปรับใช้กับที่เก็บ dev บนเซิร์ฟเวอร์
กระบวนการปรับใช้นั้นง่ายและประกอบด้วยสามขั้นตอนหลัก:
- สร้างและเผยแพร่ภาพในพื้นที่เก็บข้อมูลของเรา
- เรียกใช้การทดสอบในคอนเทนเนอร์ตามอิมเมจที่สร้างขึ้นใหม่
- ปรับใช้กับสภาพแวดล้อมที่ต้องการขึ้นอยู่กับสาขา (dev/master)
ส่วนหน้า
การตั้งค่าไซต์
พร็อกซีทราฟฟิกผ่าน Nginx
เรามาถึงจุดสิ้นสุดแล้ว ยังคงเป็นเพียงการกำหนดค่าพร็อกซีของทราฟฟิกขาเข้าและขาออกไปยังคอนเทนเนอร์ของเราผ่าน Nginx เราได้ครอบคลุมกระบวนการนี้แล้วในขั้นตอนที่ 5 ของการตั้งค่า Docker Registry ควรทำซ้ำเช่นเดียวกันกับส่วนหลังและส่วนหน้าในสภาพแวดล้อมของ dev และ prod
ฉันจะให้ภาพหน้าจอของการตั้งค่า
แบ็กเอนด์
ส่วนหน้า
Важноеуточнение. URL ทั้งหมดจะถูกพร็อกซีไปยังคอนเทนเนอร์ส่วนหน้า ยกเว้น URL ที่ขึ้นต้นด้วย /api/
- พวกเขาจะถูกพร็อกซีไปยังคอนเทนเนอร์ด้านหลัง (ดังนั้น ในคอนเทนเนอร์ด้านหลัง ตัวจัดการทั้งหมดต้องขึ้นต้นด้วย /api/
).
ผลของการ
ตอนนี้ไซต์ของเราควรพร้อมใช้งานที่ helloworld.ru และ dev.helloworld.ru (prod- และ dev-environments ตามลำดับ)
โดยรวมแล้ว เราได้เรียนรู้วิธีเตรียมแอปพลิเคชันอย่างง่ายใน Flask และ Angular และตั้งค่าไปป์ไลน์ใน Github Actions เพื่อเผยแพร่ไปยังเซิร์ฟเวอร์ที่ใช้งาน Plesk
ฉันจะทำซ้ำลิงก์ไปยังที่เก็บด้วยรหัส:
ที่มา: will.com