
هن آرٽيڪل ۾، مان شيئر ڪندس سي آءِ / سي ڊي ترتيب ڏيڻ جو تجربو Plesk ڪنٽرول پينل ۽ Github عمل استعمال ڪندي. اڄ اسان سکنداسين ته هڪ سادي پراجيڪٽ کي ڪيئن ٺاهجي، جنهن ۾ غير پيچيده نالو "Helloworld" آهي. اهو فلاسڪ پٿون فريم ورڪ ۾ لکيل آهي، سيلري ڪارڪنن ۽ هڪ Angular 8 فرنٽ اينڊ سان.
مخزنن جا لنڪ: , .
مضمون جي پهرين حصي ۾، اسان اسان جي منصوبي ۽ ان جي حصن تي نظر ڪنداسين. ٻئي ۾، اسان اهو معلوم ڪنداسين ته Plesk کي ڪيئن سيٽ ڪرڻ ۽ ضروري ملائڻ ۽ اجزاء (DB، RabbitMQ، Redis، Docker، وغيره) کي انسٽال ڪرڻ.
ٽئين حصي ۾، اسان آخرڪار اهو معلوم ڪنداسين ته اسان جي پروجيڪٽ کي ديو ۽ پروڊ ماحول ۾ سرور تائين پهچائڻ لاء هڪ پائپ لائن ڪيئن قائم ڪجي. ۽ پوءِ اسان سائيٽ کي سرور تي لانچ ڪنداسين.
۽ ها، مون پنهنجو تعارف ڪرائڻ وساري ڇڏيو. منهنجو نالو Oleg Borzov آهي، مان Domclick تي گروي مينيجرز لاءِ CRM ٽيم ۾ مڪمل اسٽيڪ ڊولپر آهيان.
پروجيڪٽ جو جائزو
پهرين، اچو ته ڏسو ٻه پروجيڪٽ ريپوزٽريز - پس منظر ۽ سامهون - ۽ وڃو ڪوڊ مٿان.
پس منظر: فلاسڪ + سليري
پوئين حصي لاءِ، مون ھڪڙو جھنڊو ورتو جيڪو پٿون ڊولپرز ۾ ڪافي مقبول آھي: فلاسڪ فريم ورڪ (اي پي آءِ) ۽ سيلري (ٽاسڪ جي قطار لاءِ). SQLAchemy ORM طور استعمال ڪيو ويندو آھي. Alembic لڏپلاڻ لاء استعمال ڪيو ويندو آهي. هينڊلز ۾ JSON جي تصديق لاءِ - Marshmallow.
В هتي هڪ Readme.md فائل آهي جنهن ۾ ساخت جي تفصيلي وضاحت ۽ پروجيڪٽ کي هلائڻ لاءِ هدايتون آهن.
بلڪل غير پيچيده، 6 قلمن تي مشتمل آهي:
/ping- دستيابي چيڪ ڪرڻ لاء؛- رجسٽريشن، اختيار ڏيڻ، غير اختيار ڏيڻ ۽ هڪ بااختيار صارف حاصل ڪرڻ لاء هٿيار؛
- هڪ اي ميل هينڊل جيڪو ڪم کي سيلري جي قطار ۾ رکي ٿو.
اڃا به آسان، صرف هڪ مسئلو آهي send_mail_task.
فولڊر ۾ اتي ٻه ذيلي فولڊر آهن:
dockerٻن Dockerfiles سان (base.dockerfileهڪ نادر بدلجندڙ بنيادي تصوير ٺاهڻ ۽Dockerfileمکيه اسيمبلين لاء؛.env_files- فائلن سان گڏ مختلف ماحول لاء ماحولياتي متغير سان.
پروجيڪٽ جي روٽ تي چار ڊاکر-ڪپوز فائلون آهن:
docker-compose.local.db.ymlترقي لاء مقامي ڊيٽابيس کي وڌائڻ لاء؛docker-compose.local.workers.ymlڪم ڪندڙ، ڊيٽابيس، ريڊس ۽ RabbitMQ جي مقامي اڀار لاءِ؛docker-compose.test.ymlتعیناتي دوران ٽيسٽ هلائڻ لاء؛docker-compose.ymlلڳائڻ لاء.
۽ آخري فولڊر جنهن ۾ اسان کي دلچسپي آهي - . ان ۾ شامل ڪرڻ لاء شيل اسڪرپٽ شامل آهن:
deploy.sh- لڏپلاڻ ۽ تعیناتي جي شروعات. Github Actions ۾ ٽيسٽ ٺاهڻ ۽ هلائڻ کانپوءِ سرور تي هلندو آهي؛rollback.sh- ڪنٽينرز جو رولبڪ اسيمبليءَ جي پوئين ورزن ڏانهن؛curl_tg.sh- ٽيليگرام ڏانهن موڪلڻ جا اطلاع موڪلڻ.
Angular تي اڳيون
بيڪ جي ڀيٽ ۾ تمام آسان. اڳيون ٽن صفحن تي مشتمل آهي:
- مکيه صفحو هڪ فارم سان اي ميل موڪلڻ لاءِ ۽ هڪ نڪرڻ وارو بٽڻ.
- لاگ ان صفحو.
- رجسٽريشن جو صفحو.
مکيه صفحو سجيل نظر اچي ٿو:

روٽ تي ٻه فائلون آهن Dockerfile и docker-compose.yml، گڏوگڏ واقف فولڊر .ci-cd پوئتي مخزن جي ڀيٽ ۾ ٿورڙي اسڪرپٽ سان (هٽايو ويو اسڪرپٽس ھلندڙ ٽيسٽن لاءِ).
Plesk ۾ هڪ منصوبو شروع ڪرڻ
اچو ته شروع ڪريون Plesk قائم ڪرڻ ۽ اسان جي سائيٽ لاءِ سبسڪرپشن ٺاهي.
ايڪسٽينشن کي انسٽال ڪرڻ
Plesk ۾، اسان کي چار واڌارن جي ضرورت آھي:
DockerPlesk منتظم پينل ۾ ڪنٽينرز جي حالت کي منظم ۽ بصري طور تي ڊسپلي ڪرڻ لاء؛Gitسرور تي ترتيب ڏيڻ واري قدم کي ترتيب ڏيڻ لاء؛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 (اسان جي صورت ۾، اتي هڪ سرور هوندو ٻن ڊيٽابيس سان گڏ ديو ۽ پروڊ ماحول لاء).
- RabbitMQ (ساڳيو، ساڳيو مثال ماحول لاءِ مختلف ويسٽن سان).
- ٻه Redis مثال (dev ۽ prod ماحول لاء).
- Docker رجسٽري (تعمير ٿيل Docker تصويرن جي مقامي اسٽوريج لاءِ).
- UI Docker رجسٽري لاءِ.
PostgreSQL
Plesk اڳ ۾ ئي PostgreSQL DBMS سان گڏ اچي ٿو، پر جديد نسخو نه آهي (لکڻ وقت Plesk Obsidian پوسٽ گريس ورزن 8.4-10.8). اسان چاهيون ٿا ته اسان جي ايپليڪيشن لاء جديد نسخو (12.3 هن لکڻ جي وقت تي)، تنهنڪري اسان ان کي دستي طور تي انسٽال ڪنداسين.
پوسٽ گريس انسٽال ڪرڻ لاءِ تفصيلي هدايتون 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 انسٽال ڪرڻ ڏانهن اڳتي وڌون. اهو انسٽال ٿيل آهي 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. اهو Celery ڪمن جي نتيجن کي محفوظ ڪرڻ لاء هڪ پس منظر طور استعمال ڪيو ويندو.
اسان ٻه ڊاڪر ڪنٽينرز کي ريڊيس سان گڏ ڪنداسين dev ۽ prod ماحول لاءِ ايڪسٽينشن استعمال ڪندي Docker Plesk لاء.
- اسان Plesk ڏانھن وڃو، وڌايون سيڪشن ڏانھن وڃو، ڊاکر جي واڌ کي ڏسو ۽ ان کي انسٽال ڪريو (اسان کي مفت ورزن جي ضرورت آھي):

- انسٽال ٿيل ايڪسٽينشن ڏانھن وڃو، ڳولا ذريعي تصوير ڳولھيو
redis bitnami۽ تازو ورزن انسٽال ڪريو:
- اسان ڊائون لوڊ ٿيل ڪنٽينر ۾ وڃون ٿا ۽ ترتيب ترتيب ڏيو: بندرگاهن جي وضاحت ڪريو، وڌ ۾ وڌ مختص ڪيل RAM سائيز، پاسورڊ ۾ ماحول جي متغير، ۽ حجم کي وڌايو:

- اسان پروڊ ڪنٽينر لاءِ 2-3 مرحلا انجام ڏيون ٿا، سيٽنگون ۾ اسان صرف پيٽرول کي تبديل ڪندا آهيون: پورٽ، پاسورڊ، ريم سائيز ۽ سرور تي حجم فولڊر ڏانهن رستو:

Docker رجسٽري
بنيادي خدمتن کان علاوه، اهو سٺو لڳندو ته توهان جي پنهنجي Docker تصويري مخزن کي سرور تي رکي. خوشقسمتيء سان، سرور جي جاء هاڻي ڪافي سستي آهي (يقينا هڪ DockerHub سبسڪرپشن کان سستا)، ۽ هڪ خانگي مخزن کي قائم ڪرڻ جو عمل تمام سادو آهي.
اسان چاهيون ٿا:
- پاسورڊ-محفوظ Docker مخزن هڪ ذيلي ڊومين تي دستياب آهي ;
- مخزن ۾ تصويرون ڏسڻ لاءِ UI، دستياب آهي .
هي ڪرڻ لاء:
- اچو ته اسان جي رڪنيت ۾ Plesk ۾ ٻه ذيلي ڊومينز ٺاهيون: docker.helloworld.ru ۽ docker-ui.helloworld.ru، ۽ ترتيب ڏيو اچو ته انھن لاءِ سرٽيفڪيٽ انڪريپ ڪريو.
- فائل کي شامل ڪريو 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 - ۽ اسان کي نينڪسڪس کي اسان جي ڪنٽينرز ڏانهن منتقل ڪرڻ جي ضرورت آهي. اهو Plesk ذريعي ڪري سگهجي ٿو.
docker.helloworld.ru ۽ docker-ui.helloworld.ru ذيلي ڊومينز لاءِ هيٺيان قدم کڻڻ گهرجن:
سيڪشن ديو اوزار اسان جي سائيٽ ڏانهن وڃو ڊاکر پراکسي ضابطا:

۽ اسان جي ڪنٽينر تي پراکسي ايندڙ ٽرئفڪ لاءِ ضابطو شامل ڪريو:

- اسان چيڪ ڪريون ٿا ته اسان مقامي مشين مان اسان جي ڪنٽينر ۾ لاگ ان ڪري سگھون ٿا:
$ 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 فائر وال ۾ بندرگاهن کي کولڻ
اجزاء کي انسٽال ڪرڻ ۽ ترتيب ڏيڻ کان پوء، اسان کي بندرگاهن کي کولڻ جي ضرورت آهي ته جيئن اجزاء Docker ڪنٽينرز ۽ خارجي نيٽ ورڪ کان رسائي لائق آهن.
اچو ته ڏسو ته اهو ڪيئن ڪجي استعمال ڪندي Plesk لاءِ فائر وال ايڪسٽينشن جيڪو اسان اڳ ۾ انسٽال ڪيو.
- ڏانھن وڃو اوزار ۽ سيٽنگون> سيٽنگون> فائر وال:

- ڏانھن وڃو Plesk فائر وال قاعدن کي تبديل ڪريو> ڪسٽم قاعدو شامل ڪريو ۽ هيٺيون TCP بندرگاهن کي کوليو ڊاڪر سب نيٽ (172.0.0.0 / 8):
RabbitMQ: 1883، 4369، 5671-5672، 25672، 61613-61614
ريڊس: 32785، 32786
- اسان هڪ قاعدو پڻ شامل ڪنداسين جيڪو پوسٽ گري ايس ايس ايل بندرگاهن ۽ RabbitMQ مئنيجمينٽ پينل کي ٻاهرئين دنيا ڏانهن کليل ڪندو:

- لاڳو تبديليون بٽڻ استعمال ڪندي ضابطن کي لاڳو ڪريو:

Github عملن ۾ CI / CD ترتيب ڏيڻ
اچو ته سڀ کان وڌيڪ دلچسپ حصو تي وڃو - هڪ مسلسل انضمام پائپ لائن قائم ڪرڻ ۽ اسان جي پروجيڪٽ کي سرور تائين پهچائڻ.
هي پائپ لائن ٻن حصن تي مشتمل هوندي:
- ھڪڙي تصوير ٺاھيو ۽ ٽيسٽ ھلائڻ (پٺاڻ لاءِ) - گٿب پاسي تي؛
- هلندڙ لڏپلاڻ (پٺاڻن لاءِ) ۽ ڪنٽينر لڳائڻ - سرور تي.
Plesk ڏانهن موڪليو
اچو ته پهرين ٻئي نقطي سان معاملو ڪريون (ڇاڪاڻ ته پهريون ان تي منحصر آهي).
اسان Plesk لاءِ Git ايڪسٽينشن استعمال ڪندي ترتيب ڏيڻ واري عمل کي ترتيب ڏينداسين.
هڪ مثال تي غور ڪريو پروڊ ماحول سان گڏ هڪ پس منظر مخزن لاءِ.
- اسان وڃون ٿا اسان جي Helloworld ويب سائيٽ جي سبسڪرپشن ۽ وڃو Git سبسيڪشن:

- "ريموٽ گيٽ مخزن" جي فيلڊ ۾ اسان جي Github مخزن جي لنڪ داخل ڪريو ۽ ڊفالٽ فولڊر کي تبديل ڪريو
httpdocsٻئي ڏانهن (مثال طور./httpdocs/hw_back):
- اڳئين قدم کان SSH پبلڪ ڪيچ کي نقل ڪريو ۽ Github سيٽنگون ۾.
- اسان قدم 2 ۾ اسڪرين تي ٺيڪ کي دٻايو، جنهن کان پوء اسان Plesk ۾ مخزن واري صفحي ڏانهن منتقل ڪيو وڃي. هاڻي اسان کي مخزن کي ترتيب ڏيڻ جي ضرورت آهي تازه ڪاري ڪرڻ لاءِ ماسٽر برانچ جي ڪمن تي. هن کي ڪرڻ لاء، ڏانهن وڃو مخزن سيٽنگون ۽ قدر بچايو
Webhook URL(اسان کي بعد ۾ ان جي ضرورت پوندي جڏهن Github عملن کي ترتيب ڏيو):
- پوئين پيراگراف کان اسڪرين تي ڪارناما فيلڊ ۾، مقرري شروع ڪرڻ لاء اسڪرپٽ داخل ڪريو:
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}- سرور تي پس منظر واري مخزن جي پروڊ فولڊر ڏانهن رستو؛
{ENV}- ماحول (dev / prod)، اسان جي صورت ۾prod;
{DOCKER_REGISTRY_HOST}- اسان جي ڊاکر جي ذخيري جو ميزبان
{TG_BOT_TOKEN}- ٽيليگرام بوٽ ٽوڪن؛
{TG_CHAT_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
پس منظر واري مخزن لاءِ ديو ماحول ۽ فرنٽ اينڊ ساڳئي طريقي سان ترتيب ڏنل آهن.
Github عملن ۾ لڳائڻ واري پائپ لائن
اچو ته Github Actions ۾ اسان جي CI / CD پائپ لائن جو پهريون حصو ترتيب ڏيو.
Backend
پائپ لائن ۾ بيان ڪيو ويو آهي .
پر ان کي پارس ڪرڻ کان اڳ، اچو ته ڀريون ڳجھي متغير جيڪي اسان کي Github ۾ گهربل آهن. هن کي ڪرڻ لاء، ڏانهن وڃو سيٽنگون -> راز:
DOCKER_REGISTRY- اسان جي Docker مخزن جو ميزبان (docker.helloworld.ru)؛DOCKER_LOGIN- Docker مخزن ۾ لاگ ان؛DOCKER_PASSWORD- ان لاء پاسورڊ؛DEPLOY_HOST- ميزبان جتي Plesk منتظم پينل موجود آهي (مثال: : 8443 يا :8443)DEPLOY_BACK_PROD_TOKEN- سرور تي پراڊ-رپوزٽري ۾ ڊيپلائيمينٽ لاءِ هڪ ٽوڪن (اسان ان کي پليسڪ پي. 4 ۾ ڊيپلائيمينٽ ۾ حاصل ڪيو)؛DEPLOY_BACK_DEV_TOKEN- سرور تي dev repository تي لڳائڻ لاءِ ٽوڪن.
لڳائڻ جو عمل سادو آهي ۽ ٽن مکيه مرحلن تي مشتمل آهي:
- اسان جي مخزن ۾ تصوير کي تعمير ۽ شايع ڪرڻ؛
- تازي ٺهيل تصوير جي بنياد تي ڪنٽينر ۾ هلندڙ ٽيسٽ؛
- برانچ (dev/master) جي لحاظ کان مطلوب ماحول ۾ ترتيب ڏيڻ.
Frontend
بيڪ کان ٿورو مختلف. اهو هلندڙ ٽيسٽن سان گڏ هڪ قدم نه آهي ۽ ترتيب ڏيڻ لاءِ ٽوڪن جا نالا تبديل ڪري ٿو. سامهون مخزن لاء راز، رستي ۾، الڳ الڳ ڀريو وڃي.
سائيٽ سيٽ اپ
Nginx ذريعي ٽريفڪ پراکسي
خير، اسان آخر ۾ آيا آهيون. اهو صرف Nginx ذريعي اسان جي ڪنٽينر ڏانهن ايندڙ ۽ ٻاهرئين ٽرئفڪ جي پراکسي ترتيب ڏيڻ لاء رهي ٿو. اسان اڳ ۾ ئي هن عمل کي ڍڪي ڇڏيو آهي قدم 5 ۾ Docker رجسٽري سيٽ اپ. ساڳيو ئي ديو ۽ پروڊ ماحول ۾ پوئتي ۽ سامهون حصن لاء بار بار ڪيو وڃي.
مان سيٽنگن جا اسڪرين شاٽ ڏيندس.
Backend

Frontend

جي. سڀ URLs فرنٽ ائنڊ ڪنٽينر تي پراڪس ڪيا ويندا، سواءِ انھن جي جن سان شروع ٿئي /api/ - اهي پوئين ڪنٽينر ڏانهن پراڪس ڪيا ويندا (تنهنڪري پوئين ڪنٽينر ۾، سڀني هٿيارن سان شروع ٿيڻ گهرجي /api/).
نتيجو
ھاڻي اسان جي سائيٽ helloworld.ru ۽ dev.helloworld.ru (ترتيب سان prod- ۽ dev-environments) تي دستياب ٿيڻ گھرجي.
مجموعي طور تي، اسان سکيو ته فلاسڪ ۽ انگولر ۾ هڪ سادي ايپليڪيشن ڪيئن تيار ڪجي ۽ گيٿب ايڪشنز ۾ هڪ پائيپ لائين قائم ڪجي ته ان کي Plesk هلائيندڙ سرور ڏانهن رول آئوٽ ڪيو وڃي.
مان ڪوڊ سان گڏ مخزن جي لنڪ کي نقل ڪندس: , .
جو ذريعو: www.habr.com
