
በዚህ ጽሑፍ ውስጥ የፕሌስክ የቁጥጥር ፓነልን እና የጊትዩብ ድርጊቶችን በመጠቀም CI/CDን የማዋቀር ልምዴን አካፍላለሁ። ዛሬ "Helloworld" በሚለው ያልተወሳሰበ ስም አንድ ቀላል ፕሮጀክት እንዴት ማሰማራት እንደሚቻል እንማራለን. የተፃፈው በፍላስክ ፓይዘን ማእቀፍ፣ ከሴሊሪ ሰራተኞች እና ከ Angular 8 frontend ጋር ነው።
ወደ ማከማቻዎች የሚወስዱ አገናኞች፡- , .
በአንቀጹ የመጀመሪያ ክፍል ውስጥ የእኛን ፕሮጀክት እና ክፍሎቹን እንመለከታለን. በሁለተኛው ውስጥ, ፕሌስክን እንዴት ማዋቀር እንዳለብን እና አስፈላጊዎቹን ማራዘሚያዎች እና አካላት (DB, RabbitMQ, Redis, Docker, ወዘተ) እንጭናለን.
በሶስተኛው ክፍል በመጨረሻ ፕሮጀክታችንን በዴቭ እና ፕሮድ አካባቢ ወደ አገልጋይ ለማሰማራት የቧንቧ መስመር እንዴት እንደምናዘጋጅ እናያለን። እና ከዚያ ጣቢያውን በአገልጋዩ ላይ እናስጀምራለን.
እና አዎ, እራሴን ማስተዋወቅ ረሳሁ. ስሜ ኦሌግ ቦርዞቭ እባላለሁ፣ በDomclick ውስጥ ለሞርጌጅ አስተዳዳሪዎች በCRM ቡድን ውስጥ ሙሉ ቁልል ገንቢ ነኝ።
የፕሮጀክት አጠቃላይ እይታ
በመጀመሪያ ፣ ሁለት የፕሮጀክት ማከማቻዎችን - የኋላ እና የፊት - እና በኮዱ ላይ እንይ።
ጀርባ፡ ብልቃጥ+ሴሊሪ
ለኋለኛው ክፍል፣ በፓይዘን ገንቢዎች ዘንድ በጣም ተወዳጅ የሆነ ስብስብ ወሰድኩ፡ የፍላስክ ማዕቀፍ (ለኤፒአይ) እና ሴሊሪ (ለተግባር ወረፋ)። SQLAchemy እንደ ORM ጥቅም ላይ ይውላል። Alembic ለስደት ያገለግላል። በመያዣዎች ውስጥ ለJSON ማረጋገጫ - Marshmallow።
В ፕሮጀክቱን ለማስኬድ አወቃቀሩን እና መመሪያዎችን የያዘ የ Readme.md ፋይል አለ።
በጣም ያልተወሳሰበ ፣ 6 እስክሪብቶችን ያቀፈ ነው-
/ping- ተገኝነትን ለማረጋገጥ;- ለምዝገባ, ለፈቃድ, ከፈቃድ መከልከል እና የተፈቀደ ተጠቃሚ ለማግኘት መያዣዎች;
- በሴልሪ ወረፋ ውስጥ አንድ ተግባር የሚያስቀምጥ የኢሜል እጀታ።
በጣም ቀላል, አንድ ችግር ብቻ አለ send_mail_task.
በአቃፊ ውስጥ ሁለት ንዑስ አቃፊዎች አሉ-
dockerከሁለት ዶከርፋይሎች ጋር (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 Actions ውስጥ ሙከራዎችን ከገነቡ እና ካካሄዱ በኋላ በአገልጋዩ ላይ ይሰራል;rollback.sh- መያዣዎችን ወደ ቀድሞው የስብሰባው ስሪት መመለስ;curl_tg.sh- ወደ ቴሌግራም የማሰማራት ማሳወቂያዎችን በመላክ ላይ።
ፊት ለፊት በ Angular
ከቤክ በጣም ቀላል። ፊት ለፊት ሶስት ገጾችን ያቀፈ ነው-
- ኢሜል ለመላክ ቅጽ እና መውጫ ቁልፍ ያለው ዋና ገጽ።
- የመግቢያ ገጽ.
- የምዝገባ ገጽ.
ዋናው ገጽ በጣም የሚያምር ይመስላል፡-

በሥሩ ላይ ሁለት ፋይሎች አሉ። Dockerfile и docker-compose.yml, እንዲሁም የሚታወቀው አቃፊ .ci-cd ከኋላ ማከማቻው በትንሹ ያነሱ ስክሪፕቶች (ለሙከራዎች የተወገዱ ስክሪፕቶች)።
በፕሌስክ ውስጥ ፕሮጀክት መጀመር
ፕሌስክን በማዘጋጀት እና ለጣቢያችን ምዝገባ በመፍጠር እንጀምር።
ቅጥያዎችን በመጫን ላይ
በፕሌስክ ውስጥ አራት ማራዘሚያዎች ያስፈልጉናል፡
Dockerበ Plesk የአስተዳዳሪ ፓነል ውስጥ ያሉትን መያዣዎች ሁኔታ ለማስተዳደር እና በእይታ ለማሳየት;Gitበአገልጋዩ ላይ የማሰማራት ደረጃን ለማዋቀር;Let's Encryptነፃ የTLS ሰርተፊኬቶችን ለማመንጨት (እና በራስ-ማደስ);Firewallየገቢ ትራፊክ ማጣሪያን ለማዋቀር።
በቅጥያዎች ክፍል ውስጥ በ Plesk አስተዳዳሪ ፓነል በኩል ሊጭኗቸው ይችላሉ-

ለቅጥያዎች ዝርዝር ቅንብሮችን አንመለከትም ፣ ነባሪ ቅንጅቶች ለኛ ማሳያ ዓላማዎች ይሆናሉ።
የደንበኝነት ምዝገባ እና ጣቢያ ይፍጠሩ
በመቀጠል ለ helloworld.ru ድር ጣቢያችን ምዝገባ መፍጠር እና የ dev.helloworld.ru ንዑስ ጎራ እዚያ ማከል አለብን።
- ለ helloworld.ru ጎራ ምዝገባ ይፍጠሩ እና ለስርዓቱ ተጠቃሚ የመግቢያ-ይለፍ ቃል ይጥቀሱ፡

ከገጹ ግርጌ ላይ ባለው ሳጥን ላይ ምልክት ያድርጉ ጎራውን በኑ ኢንክሪፕት እናስጠብቅለጣቢያው HTTPS ን ማዋቀር ከፈለግን፡-
- በመቀጠል፣ በዚህ የደንበኝነት ምዝገባ ውስጥ፣ ንዑስ ጎራ ይፍጠሩ dev.helloworld.ru (ለዚህም ነፃ የTLS ሰርተፍኬት መስጠት ይችላሉ)

የአገልጋይ ክፍሎችን በመጫን ላይ
ጋር አገልጋይ አለን። OS Debian ዘርጋ 9.12 እና የተጫነ የቁጥጥር ፓነል Plesk Obsidian 18.0.27.
ለፕሮጀክታችን መጫን እና ማዋቀር አለብን፡-
- PostgreSQL (በእኛ ሁኔታ ለዴቭ እና ፕሮድ አከባቢዎች ሁለት የውሂብ ጎታዎች ያሉት አንድ አገልጋይ ይኖራል)።
- RabbitMQ (ተመሳሳይ፣ ተመሳሳይ ምሳሌ ከአከባቢ የተለያዩ vhosts ጋር)።
- ሁለት Redis ምሳሌዎች (ለዴቭ እና ፕሮድ አካባቢዎች)።
- Docker መዝገብ ቤት (የተገነቡ Docker ምስሎችን ለአካባቢያዊ ማከማቻ)።
- UI ለ Docker መዝገብ ቤት።
PostgreSQL
Plesk ቀድሞውንም ከPostgreSQL DBMS ጋር ነው የሚመጣው፣ ግን የቅርብ ጊዜው ስሪት አይደለም (Plesk Obsidian በሚጽፉበት ጊዜ) የፖስትግሬስ ስሪቶች 8.4-10.8)። ለመተግበሪያችን የቅርብ ጊዜውን ስሪት እንፈልጋለን (ይህ በሚፃፍበት ጊዜ 12.3) ፣ ስለዚህ እኛ በእጅ እንጭነዋለን።
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-አገልጋይ በትእዛዙ እንደገና ያስጀምሩ፡-
service postgresql restart
PostgreSQLን ጭነን አዋቅረነዋል። አሁን የውሂብ ጎታ እንፍጠር፣ ተጠቃሚዎች ለዴቭ- እና ፕሮድ-አካባቢዎች፣ እና ለተጠቃሚዎች የውሂብ ጎታውን የማስተዳደር መብቶችን እንስጥ፡
$ 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 ወደ መጫን እንሸጋገር። በ ላይ ተጭኗል 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 bitnamiእና የቅርብ ጊዜውን ስሪት ይጫኑ፡-
- ወደ የወረደው ኮንቴይነር ገብተን አወቃቀሩን እናስተካክላለን፡ ወደቡን፣ የተመደበውን ከፍተኛውን የ RAM መጠን፣ የይለፍ ቃል በአካባቢ ተለዋዋጮች ይግለጹ እና ድምጹን እንሰካለን።

- ለፕሮድ ኮንቴይነር ደረጃ 2-3ን እናከናውናለን ፣ በቅንብሮች ውስጥ መለኪያዎችን ብቻ እንለውጣለን-ወደብ ፣ የይለፍ ቃል ፣ የ RAM መጠን እና በአገልጋዩ ላይ ወደ የድምጽ አቃፊው መንገድ

Docker መዝገብ ቤት
ከመሠረታዊ አገልግሎቶች በተጨማሪ, የራስዎን Docker ምስል ማከማቻ በአገልጋዩ ላይ ማስቀመጥ ጥሩ ይሆናል. እንደ እድል ሆኖ፣ የአገልጋይ ቦታ አሁን በጣም ርካሽ ነው (በእርግጠኝነት ከDockerHub ምዝገባ የበለጠ ርካሽ ነው) እና የግል ማከማቻ የማዘጋጀት ሂደት በጣም ቀላል ነው።
እንዲኖረን እንፈልጋለን:
- በይለፍ ቃል የተጠበቀ Docker ማከማቻ በንኡስ ጎራ ላይ ተደራሽ ነው። ;
- በማከማቻው ውስጥ ምስሎችን ለማየት UI፣ በ ላይ ይገኛል። .
ይህንን ለማድረግ:
- በእኛ የደንበኝነት ምዝገባ ውስጥ በፕሌስክ ውስጥ ሁለት ንዑስ ጎራዎችን እንፍጠር 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' - በኤስኤስኤች ስር፣ በDocker ማከማቻ ውስጥ ለመሠረታዊ ፈቃድ የhtpasswd ፋይል እናመነጫለን።
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password - መያዣዎችን መሰብሰብ እና ማንሳት;
docker-compose up -d - እና Nginxን ወደ መያዣዎቻችን ማዞር ያስፈልገናል. ይህ በፕሌስክ በኩል ሊከናወን ይችላል.
የሚከተሉት እርምጃዎች ለ 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 ፋየርዎል ደንቦችን ያሻሽሉ > ብጁ ህግ ያክሉ እና የሚከተሉትን የTCP ወደቦች ለ Docker subnet ይክፈቱ (172.0.0.0 / 8):
RabbitMQ፡ 1883፣ 4369፣ 5671-5672፣ 25672፣ 61613-61614
አዲስ፡ 32785፣ 32786
- እንዲሁም የ PostgreSQL ወደቦችን እና የ RabbitMQ አስተዳደር ፓነሎችን ወደ ውጭው ዓለም የሚከፍት ህግን እንጨምራለን፡

- ለውጦችን ተግብር የሚለውን ቁልፍ በመጠቀም ደንቦቹን ይተግብሩ፡-

በ Github Actions ውስጥ CI/CD ማዋቀር
ወደ በጣም አስደሳች ክፍል እንውረድ - ቀጣይነት ያለው የውህደት መስመር ዝርጋታ እና ፕሮጀክታችንን ለአገልጋዩ ማድረስ።
ይህ ቧንቧ ሁለት ክፍሎችን ያቀፈ ይሆናል.
- ምስል መገንባት እና የሩጫ ሙከራዎች (ለጀርባው) - በ Github በኩል;
- ማይግሬሽን (ለጀርባው) ማሄድ እና መያዣዎችን ማሰማራት - በአገልጋዩ ላይ.
ወደ Plesk አሰማር
በመጀመሪያ ሁለተኛውን ነጥብ እንይ (የመጀመሪያው በእሱ ላይ የተመሰረተ ስለሆነ)።
የጂት ቅጥያ ለ Plesk በመጠቀም የማሰማራት ሂደቱን እናዋቅራለን።
ለBackend ማከማቻ ከፕሮድ አካባቢ ጋር አንድ ምሳሌን አስቡ።
- ወደ የሄሎዎልድ ድረ-ገፃችን ምዝገባ ሄደን ወደ Git ንዑስ ክፍል እንሄዳለን።

- ወደ Github ማከማቻችን የሚወስድ አገናኝ ወደ "የርቀት Git ማከማቻ" መስክ አስገባ እና ነባሪውን አቃፊ ቀይር
httpdocsለሌላ (ለምሳሌ/httpdocs/hw_back):
- የኤስኤስኤች የህዝብ ቁልፍን ከቀዳሚው ደረጃ ይቅዱ እና በ Github ቅንብሮች ውስጥ ነው።
- በስክሪኑ ላይ በደረጃ 2 ላይ እሺን ጠቅ ያድርጉ ፣ ከዚያ በኋላ ወደ ፕሌስክ ወደሚገኘው የመረጃ ማከማቻ ገጽ እንመራለን። አሁን ለዋናው ቅርንጫፍ ቁርጠኝነት እንዲዘመን ማከማቻውን ማዋቀር አለብን። ይህንን ለማድረግ ወደ ይሂዱ የማጠራቀሚያ ቅንብሮች እና ዋጋውን ያስቀምጡ
Webhook URL(Gitub 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}- በአገልጋዩ ላይ ወደ የጀርባው ማከማቻ ፕሮድ አቃፊ የሚወስደው መንገድ;
{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 Actions ውስጥ የማሰማራት ቧንቧ
በ Github Actions ውስጥ የእኛን የሲአይ/ሲዲ ቧንቧ መስመር የመጀመሪያ ክፍል ወደማዘጋጀት እንሂድ።
ደጀን
የቧንቧ መስመር በ ውስጥ ተገልጿል .
ከመተንተን በፊት ግን በ Github ውስጥ የምንፈልጋቸውን ሚስጥራዊ ተለዋዋጮች እንሞላ። ይህንን ለማድረግ ወደ ይሂዱ ቅንብሮች -> ሚስጥሮች:
DOCKER_REGISTRY- የእኛ Docker ማከማቻ አስተናጋጅ (docker.helloworld.ru);DOCKER_LOGIN- ወደ ዶከር ማከማቻ መግባት;DOCKER_PASSWORD- ለእሱ የይለፍ ቃል;DEPLOY_HOST- የፕሌስክ አስተዳዳሪ ፓኔል የሚገኝበትን አስተናጋጅ (ለምሳሌ፡- : 8443 ወይም : 8443);DEPLOY_BACK_PROD_TOKEN- በአገልጋዩ ላይ ወደ ፕሮድ-ማከማቻ ቦታ ለማሰማራት ምልክት (በፕሌስክ ገጽ 4 ውስጥ በዲፕሎፕመንት ውስጥ አግኝተናል);DEPLOY_BACK_DEV_TOKEN- በአገልጋዩ ላይ ወደ ዴቭ ማከማቻ ቦታ ለማሰማራት ማስመሰያ።
የማሰማራት ሂደት ቀላል እና ሶስት ዋና ደረጃዎችን ያቀፈ ነው፡-
- በእኛ ማከማቻ ውስጥ ምስሉን መገንባት እና ማተም;
- አዲስ በተገነባ ምስል ላይ በመመርኮዝ በእቃ መያዣ ውስጥ ሙከራዎችን ማካሄድ;
- በቅርንጫፍ (dev / master) ላይ በመመስረት ወደሚፈለገው አካባቢ ማሰማራት.
ወደፊት የመጣ
ከቤክ ትንሽ የተለየ። ሙከራዎችን ከማሄድ ጋር አንድ ደረጃ ይጎድለዋል እና የማስመሰያ ስሞችን ለመሰማራት ይለውጣል። በነገራችን ላይ ለግንባር ማጠራቀሚያ ሚስጥሮች በተናጠል መሙላት አለባቸው.
ጣቢያ ማዋቀር
በNginx በኩል ትራፊክን ተኪ ማድረግ
እንግዲህ ወደ መጨረሻው ደርሰናል። በNginx በኩል ወደ መያዣችን የሚመጣውን እና ወጪ ትራፊክን ተኪ ማዋቀር ብቻ ይቀራል። ይህንን ሂደት በDocker Registry ማዋቀር ደረጃ 5 ላይ አስቀድመን ሸፍነነዋል። በዴቭ እና ፕሮድ አከባቢዎች ውስጥ ለኋላ እና ለፊት ክፍሎች ተመሳሳይ ነገር መደገም አለበት።
የቅንብሮች ቅጽበታዊ ገጽ እይታዎችን አቀርባለሁ።
ደጀን

ወደፊት የመጣ

ጠቃሚ ማብራሪያ. ሁሉም ዩአርኤሎች ከሚጀምሩት በስተቀር ወደ ፊት ለፊት መያዣው ተኪ ይሆናሉ /api/ - ከኋላ መያዣው ጋር ተኪ ይሆናሉ (ስለዚህ በኋለኛው መያዣ ውስጥ ሁሉም ተቆጣጣሪዎች መጀመር አለባቸው /api/).
ውጤቶች
አሁን የእኛ ጣቢያ helloworld.ru እና dev.helloworld.ru (prod- እና dev-environments, በቅደም) ላይ መገኘት አለበት.
በአጠቃላይ ቀላል አፕሊኬሽን በ Flask እና Angular እንዴት ማዘጋጀት እንዳለብን ተምረናል እና በ Github Actions ውስጥ የቧንቧ መስመር በማዘጋጀት ፕሌስክን ወደሚያስኬድ አገልጋይ ለመዘርጋት ተምረናል።
ወደ ማከማቻዎቹ የሚወስዱትን አገናኞች በኮዱ እባዛለሁ፡- , .
ምንጭ: hab.com
