ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขืœ ื˜ื™ื™ืœืŸ ืžื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ CI / CD ื ื™ืฆืŸ ื“ื™ ืคึผืœืขืกืง ืงืึธื ื˜ืจืึธืœ ืคึผืึทื ืขืœ ืื•ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื–. ื”ื™ื™ึทื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ืคึผืฉื•ื˜ ืคึผืจื•ื™ืขืงื˜ ืžื™ื˜ ื“ื™ ืึทื ืงืึทืžืคึผืœืึทืงื™ื™ื˜ื™ื“ ื ืึธืžืขืŸ "ื”ืขืœืœืึธื•ื•ืึธืจืœื“". ืขืก ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ื™ ืคืœืึทืกืง ืคึผื™ื˜ื”ืึธืŸ ืคืจื™ื™ืžื•ื•ืขืจืง, ืžื™ื˜ ืกืขืœื“ืขืจื™ื™ ื•ื•ืึธืจืงืขืจืก ืื•ืŸ ืึทืŸ ืึทื ื’ื’ื•ืœืึทืจ 8 ืคืจืึธื ื˜ืขื ื“.

ืœื™ื ืงืก ืฆื• ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–: ื‘ืึทืงืขื ื“, ืคืจืึธื ื˜ืขื ื“.

ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ื–ื™ื™ึทืŸ ื˜ื™ื™ืœืŸ. ืื™ืŸ ื“ื™ ืจื’ืข, ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื›ืขื ืขืŸ ืื•ื™ืก ื•ื•ื™ ืฆื• ืฉื˜ืขืœืŸ ืคึผืœืขืกืง ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ื™ืงืกื˜ืขื ืฉืึทื ื– ืื•ืŸ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ (DB, RabbitMQ, Redis, Docker, ืขื˜ืง.).

ืื™ืŸ ื“ื™ ื“ืจื™ื˜ ื˜ื™ื™ืœ, ืžื™ืจ ื•ื•ืขืœืŸ ืœืขืกืึธืฃ ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ื™ ืฆื• ืฉื˜ืขืœืŸ ืึท ืจืขืจื  - ืœื™ื ื™ืข ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜ ืฆื• ืึท ืกืขืจื•ื•ืขืจ ืื™ืŸ ืึท ื“ืขื•ื• ืื•ืŸ ืคึผืจืึธื“ ืกื•ื•ื™ื•ื•ืข. ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืงืึทื˜ืขืจ ื“ืขื ืคึผืœืึทืฅ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ.

ืื•ืŸ ื™ืึธ, ืื™ืš ืคึฟืึทืจื’ืขืกืŸ ื–ื™ืš ืฆื• ื‘ืึทืงืขื ืขืŸ. ืžื™ื™ึทืŸ ื ืึธืžืขืŸ ืื™ื– ืึธืœืขื’ ื‘ืึธืจืกืึธื•ื•, ืื™ืš ื‘ื™ืŸ ืึท ืคื•ืœืกื˜ืึทืง ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืื™ืŸ ื“ื™ CRM ืžืึทื ืฉืึทืคึฟื˜ ืคึฟืึทืจ ื”ื™ืคึผืึธื˜ืขืง ืžืึทื ืึทื“ื–ืฉืขืจื– ืื™ืŸ Domclick.

ืคึผืจืึธื™ืขืงื˜ ืื™ื‘ืขืจื‘ืœื™ืง

ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ืฆื•ื•ื™ื™ ืคึผืจื•ื™ืขืงื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– - ื‘ืึทืงืขื ื“ ืื•ืŸ ืคืจืึธื ื˜ - ืื•ืŸ ื’ื™ื™ืŸ ืื™ื‘ืขืจ ื“ื™ ืงืึธื“.

ื‘ืึทืงืขื ื“: ืคืœืึทืฉ + ืกืขืœื“ืขืจื™ื™

ืคึฟืึทืจ ื“ื™ ืฆื•ืจื™ืง ื˜ื™ื™ืœ, ืื™ืš ื’ืขื ื•ืžืขืŸ ืึท ื‘ื™ื ื˜ืœ ื•ื•ืึธืก ืื™ื– ื’ืึทื ืฅ ืคืึธืœืงืก ืฆื•ื•ื™ืฉืŸ ืคึผื™ื˜ื”ืึธืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก: ื“ื™ ืคืœืึทืกืง ืคืจื™ื™ืžื•ื•ืขืจืง (ืคึฟืึทืจ ื“ื™ ืึทืคึผื™) ืื•ืŸ ืกืขืœื“ืขืจื™ื™ (ืคึฟืึทืจ ื“ื™ ืึทืจื‘ืขื˜ ืจื™ื™). SQLAchemy ืื™ื– ื’ืขื ื™ืฆื˜ ื•ื•ื™ ORM. ืึทืœืขืžื‘ื™ืง ืื™ื– ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ืžื™ื™ื’ืจื™ื™ืฉืึทื ื–. ืคึฟืึทืจ JSON ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ ืื™ืŸ ื›ืึทื ื“ืึทืœื– - ืžืึทืจืฉืžืขืœืึธื•.

ะ’ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– ืขืก ืื™ื– ืึท Readme.md ื˜ืขืงืข ืžื™ื˜ ืึท ื“ื™ื˜ื™ื™ืœื“ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืื•ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืคึผืจื•ื™ืขืงื˜.

ื•ื•ืขื‘ ื˜ื™ื™ืœ ืึทืคึผื™ ื’ืึทื ืฅ ืึทื ืงืึทืžืคึผืœืึทืงื™ื™ื˜ื™ื“, ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ 6 ืคึผืขื ืก:

  • /ping - ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™;
  • ื›ืึทื ื“ืึทืœื– ืคึฟืึทืจ ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข, ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ, ื“ืข-ืึธื˜ืขืจื™ื–ืึทื˜ื™ืึธืŸ ืื•ืŸ ื‘ืืงื•ืžืขืŸ ืึท ืึธื˜ืขืจื™ื™ื–ื“ ื‘ืึทื ื™ืฆืขืจ;
  • ืึทืŸ E- ื‘ืจื™ื•ื• ืฉืขืคึผืŸ ื•ื•ืึธืก ืฉื˜ืขืœืŸ ืึท ืึทืจื‘ืขื˜ ืื™ืŸ ื“ื™ ืกืขืœื“ืขืจื™ื™ ืจื™ื™.

ืกืขืœื“ืขืจื™ื™ ื˜ื™ื™ืœ ืืคื™ืœื• ื’ืจื™ื ื’ืขืจ, ืขืก ืื™ื– ื‘ืœื•ื™ื– ืื™ื™ืŸ ืคึผืจืึธื‘ืœืขื send_mail_task.

ืื™ืŸ ื˜ืขืงืข /conf ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืกืึทื‘-ืคืึธืœื“ืขืจืก:

  • 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 ืึทืงืฉืึทื ื–;
  • rollback.sh - ืจืึธื•ืœื‘ืึทืง ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืฆื• ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’;
  • curl_tg.sh - ืฉื™ืงืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืฆื• ื˜ืขืœืขื’ืจืึทื.

ืคืจืึธื ื˜ืขื ื“ ืื•ื™ืฃ ื•ื•ื™ื ืงืœื“ื™ืง

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืžื™ื˜ ืคืจืึธื ื˜ ืคื™ืœ ืกื™ืžืคึผืœืขืจ ื•ื•ื™ ื‘ืขืง ืก. ื“ืขืจ ืคืจืึธื ื˜ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ื“ืจื™ื™ ื‘ืœืขื˜ืขืจ:

  • ื”ื•ื™ืคึผื˜ ื‘ืœืึทื˜ ืžื™ื˜ ืึท ืคืึธืจืขื ืคึฟืึทืจ ืฉื™ืงืŸ ื‘ืœื™ืฆืคึผืึธืกื˜ ืื•ืŸ ืึท ืึทืจื•ื™ืกื’ืึทื ื’ ืงื ืขืคึผืœ.
  • ืœืึธื’ื™ืŸ ื‘ืœืึทื˜.
  • ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข ื‘ืœืึทื˜.

ื“ืขืจ ื”ื•ื™ืคึผื˜ ื‘ืœืึทื˜ ืงื•ืงื˜ ืึทืกืขื˜ื™ืง:

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื˜ืขืงืขืก ืื™ืŸ ื“ื™ ื•ื•ืึธืจืฆืœ Dockerfile ะธ docker-compose.yml, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ื‘ืึทืงืึทื ื˜ ื˜ืขืงืข .ci-cd ืžื™ื˜ ืึท ื‘ื™ืกืœ ื•ื•ื™ื™ื ื™ืงืขืจืข ืกืงืจื™ืคึผืก ื•ื•ื™ ืื™ืŸ ื“ื™ ืฆื•ืจื™ืง ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืึทืจื•ื™ืกื’ืขื ื•ืžืขืŸ ืกืงืจื™ืคึผืก ืคึฟืึทืจ ืคืœื™ืกื ื“ื™ืง ื˜ืขืกืฅ).

ืกื˜ืึทืจื˜ื™ื ื’ ืึท ืคึผืจื•ื™ืขืงื˜ ืื™ืŸ ืคึผืœืขืกืง

ืœืึธืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืคึผืœืขืกืง ืื•ืŸ ืฉืึทืคึฟืŸ ืึท ืึทื‘ืึธื ืขืžืขื ื˜ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืคึผืœืึทืฅ.

ื™ื ืกื˜ืึธืœื™ื ื’ ื™ืงืกื˜ืขื ืฉืึทื ื–

ืื™ืŸ ืคึผืœืขืกืง, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืคื™ืจ ื™ืงืกื˜ืขื ืฉืึทื ื–:

  • Docker ืฆื• ืคื™ืจืŸ ืื•ืŸ ื•ื•ื™ื–ืฉื•ื•ืึทืœื™ ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ื“ื™ Plesk ืึทื“ืžื™ืŸ ื˜ืึทืคืœื™ืข;
  • Git ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืฉืจื™ื˜ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ;
  • Let's Encrypt ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ (ืื•ืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื‘ืึทื ื™ื™ึทืขืŸ) ืคืจื™ื™ TLS ืกืขืจื˜ื™ืคื™ืงืึทืฅ;
  • Firewall ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืคึฟื™ืœื˜ืจื™ืจื•ื ื’ ืคื•ืŸ ื™ื ืงืึทืžื™ื ื’ ืคืึทืจืงืขืจ.

ืื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื–ื™ื™ ื“ื•ืจืš ื“ื™ Plesk ืึทื“ืžื™ืŸ ื˜ืึทืคืœื™ืข ืื™ืŸ ื“ื™ ืขืงืกื˜ืขื ืกื™ืึธื ืก ืึธืคึผื˜ื™ื™ืœื•ื ื’:

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ ื“ื™ื˜ื™ื™ืœื“ ืกืขื˜ื˜ื™ื ื’ืก ืคึฟืึทืจ ื™ืงืกื˜ืขื ืฉืึทื ื–, ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืกืขื˜ื˜ื™ื ื’ืก ื•ื•ืขื˜ ื˜ืึธืŸ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ื“ืขืžืึธ ืฆื•ื•ืขืงืŸ.

ืฉืึทืคึฟืŸ ืึท ืึทื‘ืึธื ืขืžืขื ื˜ ืื•ืŸ ืคึผืœืึทืฅ

ื“ืขืจื ืึธืš, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ืึทื‘ืึธื ืขืžืขื ื˜ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ helloworld.ru ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืื•ืŸ ืœื™ื™ื’ืŸ ื“ื™ dev.helloworld.ru ืกื•ื‘ื“ืึธืžืึทื™ืŸ ื“ืึธืจื˜.

  1. ืฉืึทืคึฟืŸ ืึท ืึทื‘ืึธื ืขืžืขื ื˜ ืคึฟืึทืจ ื“ื™ helloworld.ru ืคืขืœื“ ืื•ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืœืึธื’ื™ืŸ ืคึผืึทืจืึธืœ ืคึฟืึทืจ ื“ื™ ืกื™ืกื˜ืขื ื‘ืึทื ื™ืฆืขืจ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
    ืงื•ืง ื“ื™ ืงืขืกื˜ืœ ืื™ืŸ ื“ื™ ื“ื ืึธ ืคื•ืŸ ื“ื™ ื‘ืœืึทื˜ ื‘ืึทื•ื•ืึธืจืขื ืขืŸ ื“ื™ ืคืขืœื“ ืžื™ื˜ Let's Encryptืื•ื™ื‘ ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฉื˜ืขืœืŸ HTTPS ืคึฟืึทืจ ื“ืขื ืคึผืœืึทืฅ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  2. ื“ืขืจื ืึธืš, ืื™ืŸ ื“ืขื ืึทื‘ืึธื ืขืžืขื ื˜, ืฉืึทืคึฟืŸ ืึท ืกื•ื‘ื“ืึธืžืึทื™ืŸ dev.helloworld.ru (ืคึฟืึทืจ ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืคืจื™ื™ TLS ื‘ืึทื•ื•ื™ื™ึทื–ืŸ):

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ื™ื ืกื˜ืึธืœื™ื ื’ ืกืขืจื•ื•ื™ืจืขืจ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ

ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืกืขืจื•ื•ืขืจ ืžื™ื˜ OS Debian Stretch 9.12 ืื•ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืงืึธื ื˜ืจืึธืœ ื˜ืึทืคืœื™ืข ืคึผืœืขืกืง ืึทื‘ืกื™ื“ื™ืึทืŸ 18.0.27.

ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜:

  • PostgreSQL (ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ื™ืŸ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ืฆื•ื•ื™ื™ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ืคึฟืึทืจ ื“ืขื•ื• ืื•ืŸ ืคึผืจืึธื“ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ).
  • RabbitMQ (ื–ืขืœื‘ื™ืงืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ื”ืึธืกื˜ืก ืคึฟืึทืจ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ).
  • ืฆื•ื•ื™ื™ ืจืขื“ื™ืก ื™ื ืกื˜ืึทื ืกื™ื– (ืคึฟืึทืจ ื“ืขื•ื• ืื•ืŸ ืคึผืจืึธื“ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ).
  • ื“ืึธืงืขืจ ืจืขื’ื™ืกื˜ืจื™ (ืคึฟืึทืจ ื”ื™ื’ืข ืกื˜ืึธืจื™ื“ื–ืฉ ืคื•ืŸ ื’ืขื‘ื•ื™ื˜ ื“ืึธืงืงืขืจ ื‘ื™ืœื“ืขืจ).
  • UI ืคึฟืึทืจ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™.

ืคึผืึธืกื˜ื’ืจืขืกืงืœ

Plesk ืงื•ืžื˜ ืฉื•ื™ืŸ ืžื™ื˜ PostgreSQL DBMS, ืึธื‘ืขืจ ื ื™ืฉื˜ ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข (ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ Plesk Obsidian ื’ืขืฉื˜ื™ืฆื˜ ืคึผืึธืกื˜ื’ืจืขืก ื•ื•ืขืจืกื™ืขืก 8.4-10.8). ืžื™ืจ ื•ื•ืขืœืŸ ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ (12.3 ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ืขื ืฉืจื™ื™ื‘ืŸ), ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืžืึทื ื™ื•ืึทืœื™.

ืขืก ื–ืขื ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื“ื™ื˜ื™ื™ืœื“ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ื™ื ืกื˜ืึธืœื™ื ื’ Postgres ืื•ื™ืฃ ื“ืขื‘ื™ืึทืŸ ืื•ื™ืฃ ื“ื™ ื ืขืฅ (ื‘ื™ื™ึทืฉืคึผื™ืœ), ืึทื–ื•ื™ ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื–ื™ื™ ืื™ืŸ ื“ืขื˜ืึทืœ, ืื™ืš ื•ื•ืขื˜ ื ืึธืจ ื’ืขื‘ืŸ ื“ื™ ืงืึทืžืึทื ื“ื–:

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. ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืึทืคึฟืŸ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก, ื™ื•ื–ืขืจื– ืคึฟืึทืจ ื“ืขื•ื• ืื•ืŸ ืคึผืจืึธื“ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ, ืื•ืŸ ื’ืขื‘ืŸ ื™ื•ื–ืขืจื– ืจืขื›ื˜ ืฆื• ืคื™ืจืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก:

$ 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, ืึท ืึธื ื–ืึธื’ ืžืขืงืœืขืจ ืคึฟืึทืจ ืกืขืœื“ืขืจื™ื™. ื™ื ืกื˜ืึธืœื™ื ื’ ืขืก ืื•ื™ืฃ ื“ืขื‘ื™ืึทืŸ ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜:

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 ืคึฟืึทืจ ืคึผืœืขืกืง.

  1. ืžื™ืจ ื’ื™ื™ืŸ ืฆื• ืคึผืœืขืกืง, ื’ื™ื™ืŸ ืฆื• ื“ื™ ืขืงืกื˜ืขื ืกื™ืึธื ืก ืึธืคึผื˜ื™ื™ืœื•ื ื’, ืงื•ืง ืคึฟืึทืจ ื“ื™ ื“ืึธืงืงืขืจ ื’ืขืฉืคึผืจื™ื™ื˜ ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก (ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืคืจื™ื™ ื•ื•ืขืจืกื™ืข):

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  2. ื’ื™ื™ืŸ ืฆื• ื“ื™ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื’ืขืฉืคึผืจื™ื™ื˜, ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื‘ื™ืœื“ ื“ื•ืจืš ื“ื™ ื–ื•ื›ืŸ redis bitnami ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  3. ืžื™ืจ ื’ื™ื™ืŸ ืื™ืŸ ื“ื™ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืงืึทื ื˜ื™ื™ื ืขืจ ืื•ืŸ ืกื˜ืจื•ื™ืขืจืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ: ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคึผืึธืจื˜, ื“ื™ ืžืึทืงืกื™ืžื•ื ืึทืœืึทืงื™ื™ื˜ื™ื“ ื‘ืึทืจืึทืŸ ื’ืจื™ื™ืก, ื“ื™ ืคึผืึทืจืึธืœ ืื™ืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ืึธื ืงืœืึทืคึผืŸ ื“ื™ ื‘ืึทื ื“:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  4. ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืกื˜ืขืคึผืก 2-3 ืคึฟืึทืจ ื“ื™ ืคึผืจืึธื“ ืงืึทื ื˜ื™ื™ื ืขืจ, ืื™ืŸ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ืžื™ืจ ื ืึธืจ ื˜ื•ื™ืฉืŸ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก: ืคึผืึธืจื˜, ืคึผืึทืจืึธืœ, ื‘ืึทืจืึทืŸ ื’ืจื™ื™ืก ืื•ืŸ ื“ืจืš ืฆื• ื“ื™ ื‘ืึทื ื“ ื˜ืขืงืข ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ื“ืึธืงืขืจ ืจืขื’ื™ืกื˜ืจื™

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื™ืงืขืจื“ื™ืง ื‘ืึทื“ื™ื ื•ื ื’ืก, ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคื™ื™ึทืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข Docker ื‘ื™ืœื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ. ืฆื•ืž ื’ืœื™ืง, ืกืขืจื•ื•ืขืจ ืคึผืœืึทืฅ ืื™ื– ืื™ืฆื˜ ื’ืึทื ืฅ ื‘ื™ืœื™ืง (ืึทื•ื•ืึทื“ืข ื˜ืฉื™ืคึผืขืจ ื•ื•ื™ ืึท DockerHub ืึทื‘ืึธื ืขืžืขื ื˜), ืื•ืŸ ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืคึผืจื™ื•ื•ืึทื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜.

ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื”ืึธื‘ืŸ:

  • ืคึผืึทืจืึธืœ-ืคึผืจืึธื˜ืขืงื˜ืขื“ ื“ืึธืงืงืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฆื•ื˜ืจื™ื˜ืœืขืš ืื•ื™ืฃ ืึท ืกื•ื‘ื“ืึธืžืึทื™ืŸ https://docker.helloworld.ru;
  • UI ืคึฟืึทืจ ื•ื•ื™ื•ื™ื ื’ ื‘ื™ืœื“ืขืจ ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ื‘ื ื™ืžืฆื ืื™ืŸ https://docker-ui.helloworld.ru.

ืฆื• ื˜ืึธืŸ ื“ืึธืก:

  1. ืœืึธืžื™ืจ ืฉืึทืคึฟืŸ ืฆื•ื•ื™ื™ ืกื•ื‘ื“ืึธืžืึทื™ื ืก ืื™ืŸ ืคึผืœืขืกืง ืื™ืŸ ืื•ื ื“ื–ืขืจ ืึทื‘ืึธื ืขืžืขื ื˜: docker.helloworld.ru ืื•ืŸ docker-ui.helloworld.ru, ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื–ืืœ ืก ืขื ืงืจื™ืคึผื˜ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืคึฟืึทืจ ื–ื™ื™.
  2. ืœื™ื™ื’ ื“ื™ ื˜ืขืงืข ืฆื• ื“ื™ 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'
    

  3. ืื•ื ื˜ืขืจ SSH, ืžื™ืจ ื•ื•ืขืœืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื“ื™ .htpasswd ื˜ืขืงืข ืคึฟืึทืจ ื‘ืึทืกื™ืง ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืื™ืŸ ื“ื™ ื“ืึธืงืงืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. ืงืœื™ื™ึทื‘ืŸ ืื•ืŸ ื”ื™ื™ื‘ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–:
    docker-compose up -d
  5. ืื•ืŸ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื™ื“ืขืจืขืงื˜ Nginx ืฆื• ืื•ื ื“ื–ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ื“ื•ืจืš Plesk.

ื“ื™ ืคืืœื’ืขื ื“ืข ืกื˜ืขืคึผืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืคึฟืึทืจ ื“ื™ docker.helloworld.ru ืื•ืŸ docker-ui.helloworld.ru ืกื•ื‘ื“ืึธืžืึทื™ื ืก:

ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื“ืขื•ื• ืžื›ืฉื™ืจื™ื ืื•ื ื“ื–ืขืจ ืคึผืœืึทืฅ ื’ื™ื™ืŸ ืฆื• ื“ืึธืงืงืขืจ ืคึผืจืึธืงืกื™ ื›ึผืœืœื™ื:

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
ืื•ืŸ ืœื™ื™ื’ืŸ ืึท ื”ืขืจืฉืŸ ืฆื• ืคึผืจืึทืงืกื™ ื™ื ืงืึทืžื™ื ื’ ืคืึทืจืงืขืจ ืฆื• ืื•ื ื“ื–ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ:

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  1. ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ืžื™ืจ ืงืขื ืขืŸ ืงืœืึธืฅ ืื™ืŸ ืฆื• ืื•ื ื“ื–ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืคึฟื•ืŸ ื“ื™ ื”ื™ื’ืข ืžืึทืฉื™ืŸ:
    $ 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
  2. ืœืึธืžื™ืจ ืื•ื™ืš ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ docker-ui.helloworld.ru ืกื•ื‘ื“ืึธืžืึทื™ืŸ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
    ื•ื•ืขืŸ ืื™ืจ ื’ื™ื˜ ืื•ื™ืฃ ืึธืคึผืคืœื™ืงืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–, ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ืึท ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืคึฟืขื ืฆื˜ืขืจ ื•ื•ื• ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื™ึทืŸ ื“ื™ ื ืืžืขืŸ ืื•ืŸ ืคึผืึทืจืึธืœ ืคึฟืึทืจ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™. ื ืึธืš ื“ืขื, ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ืจื™ื“ืขืจืขืงื˜ื™ื“ ืฆื• ืึท ื‘ืœืึทื˜ ืžื™ื˜ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– (ื“ืขืจื•ื•ื™ื™ึทืœ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื™ื™ื“ื™ืง ืคึฟืึทืจ ืื™ืจ):

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ืขืคืŸ ืคึผืึธืจืฅ ืื™ืŸ Plesk Firewall

ื ืึธืš ื™ื ืกื˜ืึธืœื™ื ื’ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืขืคึฟืขื ืขืŸ ืคึผืึธืจืฅ ืึทื–ื•ื™ ืึทื– ื“ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื–ืขื ืขืŸ ืฆื•ื˜ืจื™ื˜ืœืขืš ืคึฟื•ืŸ ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื•ืŸ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื ืขืฅ.

ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ื™ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืžื™ื˜ ื“ื™ ืคื™ืจืขื•ื•ืึทืœืœ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟืึทืจ ืคึผืœืขืกืง ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืคืจื™ืขืจ.

  1. ื’ื™ื™ ืฆื• ืžื›ืฉื™ืจื™ื & ืกืขื˜ื˜ื™ื ื’ืก> ืกืขื˜ื˜ื™ื ื’ืก> ืคื™ืจืขื•ื•ืึทืœืœ:
    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
  2. ื’ื™ื™ ืฆื• ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ืคึผืœืขืกืง ืคื™ืจืขื•ื•ืึทืœืœ ื›ึผืœืœื™ื> ืœื™ื™ื’ ืžื ื”ื’ ืจื•ืœ ืื•ืŸ ืขืคึฟืขื ืขืŸ ื“ื™ ืคืืœื’ืขื ื“ืข TCP ืคึผืึธืจืฅ ืคึฟืึทืจ ื“ื™ ื“ืึธืงืงืขืจ ืกื•ื‘ื ืขื˜ (ืงืกื ื•ืžืงืก / ืงืกื ื•ืžืงืก):
    ืจืึทื‘ื™ื˜ืžืง: 1883, 4369, 5671-5672, 25672, 61613-61614
    ืจืขื“ื™ืก: 32785, 32786

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  3. ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ืœื™ื™ื’ืŸ ืึท ื”ืขืจืฉืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ืขืคืขื ืขืŸ PostgreSQL ืคึผืึธืจืฅ ืื•ืŸ RabbitMQ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคึผืึทื ืึทืœื– ืฆื• ื“ื™ ืึทืจื•ื™ืก ื•ื•ืขืœื˜:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  4. ืฆื•ืœื™ื™ื’ืŸ ื“ื™ ื›ึผืœืœื™ื ื ื™ืฆืŸ ื“ื™ ืฆื•ืœื™ื™ื’ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืงื ืขืคึผืœ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ CI / CD ืื™ืŸ Github Actions

ืœืึธืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืžืขืจืกื˜ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื™ืœ - ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง ื™ื ื˜ืึทื’ืจื™ื™ืฉืึทืŸ ืจืขืจื  - ืœื™ื ื™ืข ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ.

ื“ืขื ืจืขืจื  - ืœื™ื ื™ืข ื•ื•ืขื˜ ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ืฆื•ื•ื™ื™ ื˜ื™ื™ืœืŸ:

  • ื‘ื•ื™ืขืŸ ืึท ื‘ื™ืœื“ ืื•ืŸ ืœื•ื™ืคืŸ ื˜ืขืกืฅ (ืคึฟืึทืจ ื“ื™ ื‘ืึทืงืขื ื“) - ืื•ื™ืฃ ื“ื™ ื’ื™ื˜ื”ื•ื‘ ื–ื™ื™ึทื˜;
  • ืคืœื™ืกื ื“ื™ืง ืžื™ื™ื’ืจื™ื™ืฉืึทื ื– (ืคึฟืึทืจ ื“ื™ ื‘ืึทืงืขื ื“) ืื•ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืงืึทื ื˜ื™ื™ื ืขืจื– - ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ.

ืฆืขื•ื•ื™ืงืœืขืŸ ืฆื• Plesk

ืœืึธืžื™ืจ ื–ื™ืš ืขืจืฉื˜ ื‘ืึทื”ืึทื ื“ืœืขืŸ ืžื™ื˜ืŸ ืฆื•ื•ื™ื™ื˜ืŸ ื ืงื•ื“ื” (ื•ื•ืฒึทืœ ื“ืขืจ ืขืจืฉื˜ืขืจ ืื™ื– ื“ืขืจืคึฟื•ืŸ ืึธืคืขื ื’ื™ืง).

ืžื™ืจ ื•ื•ืขืœืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคึผืจืึธืฆืขืก ื ื™ืฆืŸ ื“ื™ Git ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟืึทืจ Plesk.

ื‘ืึทื˜ืจืึทื›ื˜ืŸ ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืžื™ื˜ ืึท ืคึผืจืึธื“ ืกื•ื•ื™ื•ื•ืข ืคึฟืึทืจ ืึท ื‘ืึทืงืขื ื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

  1. ืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืึทื‘ืึธื ืขืžืขื ื˜ ืคื•ืŸ ืื•ื ื“ื–ืขืจ Helloworld ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืื•ืŸ ื’ื™ื™ืŸ ืฆื• ื“ื™ ื’ื™ื˜ ืกืึทื‘ืกืขืงืฉืึทืŸ:

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  2. ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืึท ืœื™ื ืง ืฆื• ืื•ื ื“ื–ืขืจ Github ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ืŸ ื“ื™ "ืจื™ืžืึธื•ื˜ ื’ื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™" ืคืขืœื“ ืื•ืŸ ื˜ื•ื™ืฉืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื˜ืขืงืข httpdocs ืฆื• ืืŸ ืื ื“ืขืจ (ืœืžืฉืœ. /httpdocs/hw_back):

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  3. ื ืึธื›ืžืึทื›ืŸ ื“ื™ SSH ืคึผื•ื‘ืœื™ืง ืฉืœื™ืกืœ ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืฉืจื™ื˜ ืื•ืŸ ืœื™ื™ื’ ืฆื• ืขืก ืื™ื– ืื™ืŸ Github ืกืขื˜ื˜ื™ื ื’ืก.
  4. ื“ืจื™ืงื˜ OK ืื•ื™ืฃ ื“ืขื ืขืงืจืึทืŸ ืื™ืŸ ืฉืจื™ื˜ 2, ื ืึธืš ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ืจื™ื“ืขืจืขืงื˜ื™ื“ ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื‘ืœืึทื˜ ืื™ืŸ ืคึผืœืขืกืง. ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฆื• ื–ื™ื™ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืื•ื™ืฃ ืงืึทืžื™ืฅ ืฆื• ื“ื™ ื‘ืขืœ ืฆื•ื•ื™ื™ึทื’. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ื’ื™ื™ืŸ ืฆื• ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืกืขื˜ื˜ื™ื ื’ืก ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ื•ื•ืขืจื˜ Webhook URL (ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ ืขืก ืฉืคึผืขื˜ืขืจ ื•ื•ืขืŸ ืื™ืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ Github ืึทืงื˜ื™ืึธื ืก):

    ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

  5. ืื™ืŸ ื“ื™ ืึทืงื˜ื™ืึธื ืก ืคืขืœื“ ืื•ื™ืฃ ื“ืขื ืขืงืจืึทืŸ ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืคึผืึทืจืึทื’ืจืึทืฃ, ืึทืจื™ื™ึทืŸ ื“ื™ ืฉืจื™ืคื˜ ืฆื• ืงืึทื˜ืขืจ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜:
    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} - ืกื•ื•ื™ื•ื•ืข (ื“ืขื•ื• / ืคึผืจืึธื“), ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ 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
  6. ืœื™ื™ื’ ืึท ื‘ืึทื ื™ืฆืขืจ ืคึฟื•ืŸ ืื•ื ื“ื–ืขืจ ืึทื‘ืึธื ืขืžืขื ื˜ ืฆื• ื“ื™ ื“ืึธืงืขืจ ื’ืจื•ืคึผืข (ืึทื–ื•ื™ ื–ื™ื™ ืงืขื ืขืŸ ืคื™ืจืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–):
    sudo usermod -aG docker helloworld_admin

ื“ื™ ื“ืขื•ื• ืกื•ื•ื™ื•ื•ืข ืคึฟืึทืจ ื“ื™ ื‘ืึทืงืขื ื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ื“ื™ ืคืจืึธื ื˜ืขื ื“ ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื•ื™ืฃ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืจืขืจื  - ืœื™ื ื™ืข ืื™ืŸ Github ืึทืงืฉืึทื ื–

ืœืึธืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืจืขืจื  - ืœื™ื ื™ืข ืื™ืŸ Github ืึทืงื˜ื™ืึธื ืก.

ื‘ืึทืงืขื ื“

ื“ื™ ืจืขืจื  - ืœื™ื ื™ืข ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ deploy.yml ื˜ืขืงืข.

ืึธื‘ืขืจ ืื™ื™ื“ืขืจ ืื™ืจ ืคึผืึทืจืกื™ื ื’ ืขืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ ืกืขืงืจืขื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ ืื™ืŸ Github. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ื’ื™ื™ืŸ ืฆื• ืกืขื˜ื˜ื™ื ื’ืก -> ืกืขืงืจืขืฅ:

  • DOCKER_REGISTRY - ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื“ืึธืงืงืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (docker.helloworld.ru);
  • DOCKER_LOGIN - ืœืึธื’ื™ืŸ ืฆื• ื“ื™ ื“ืึธืงืงืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™;
  • DOCKER_PASSWORD - ืคึผืึทืจืึธืœ ืฆื• ืขืก;
  • DEPLOY_HOST - ื‘ืึทืœืขื‘ืึธืก ื•ื•ื• ื“ื™ Plesk ืึทื“ืžื™ืŸ ื˜ืึทืคืœื™ืข ืื™ื– ื‘ื ื™ืžืฆื (ื‘ื™ื™ึทืฉืคึผื™ืœ: helloworld.ru: 8443 ืึธื“ืขืจ 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - ืึท ืกื™ืžืขืŸ ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืฆื• ื“ื™ ืคึผืจืึธื“-ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ (ืžื™ืจ ื’ืึทื˜ ืขืก ืื™ืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื™ืŸ ืคึผืœืขืกืง ืคึผ. 4);
  • DEPLOY_BACK_DEV_TOKEN - ืกื™ืžืขืŸ ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืฆื• ื“ื™ ื“ืขื•ื• ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ.

ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคึผืจืึธืฆืขืก ืื™ื– ืคึผืฉื•ื˜ ืื•ืŸ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ื“ืจื™ื™ึท ื”ื•ื™ืคึผื˜ ืกื˜ืขืคึผืก:

  • ื‘ื•ื™ืขืŸ ืื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ื“ื™ ื‘ื™ืœื“ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™;
  • ืคืœื™ืกื ื“ื™ืง ื˜ืขืกืฅ ืื™ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ืคืจื™ืฉ ื’ืขื‘ื•ื™ื˜ ื‘ื™ืœื“;
  • ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืฆื• ื“ืขืจ ื’ืขื•ื•ืืœื˜ ืกื•ื•ื™ื•ื•ืข ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืฆื•ื•ื™ื™ึทื’ (ื“ืขื•ื• / ื‘ืขืœ).

ืคืจืึธื ื˜ืขื ื“

ื“ื™ deploy.yml ื˜ืขืงืข ืคึฟืึทืจ ื“ื™ ืคืจืึธื ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื‘ื™ืกืœ ืึทื ื“ืขืจืฉ ืคื•ืŸ ื‘ืขืง ืก. ืขืก ืคืขืœืŸ ืึท ืฉืจื™ื˜ ืžื™ื˜ ืคืœื™ืกื ื“ื™ืง ื˜ืขืกืฅ ืื•ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ื™ ื ืขืžืขืŸ ืคื•ืŸ ื˜ืึธืงืขื ืก ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜. ืกืขืงืจืขืฅ ืคึฟืึทืจ ื“ื™ ืคืจืึธื ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ืžื•ื–ืŸ ื–ื™ื™ืŸ ืึธื ื’ืขืคื™ืœื˜ ืกืขืคึผืขืจืึทื˜ืœื™.

ืคึผืœืึทืฅ ืกืขื˜ืึทืคึผ

ืคึผืจืึทืงืกื™ื™ื ื’ ืคืึทืจืงืขืจ ื“ื•ืจืš Nginx

ื ื•, ืžื™ืจ ื–ืขื ืขืŸ ื’ืขืงื•ืžืขืŸ ืฆื•ื ืกื•ืฃ. ืขืก ื‘ืœื™ื™ื‘ื˜ ื‘ืœื•ื™ื– ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืคึผืจืึทืงืกื™ื™ื ื’ ืคื•ืŸ ื™ื ืงืึทืžื™ื ื’ ืื•ืŸ ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคืึทืจืงืขืจ ืฆื• ืื•ื ื“ื–ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ื“ื•ืจืš Nginx. ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื‘ืื“ืขืงื˜ ื“ืขื ืคึผืจืึธืฆืขืก ืื™ืŸ ืฉืจื™ื˜ 5 ืคื•ืŸ ื“ื™ ื“ืึธืงืงืขืจ ืจืขื’ื™ืกื˜ืจื™ ืกืขื˜ืึทืคึผ. ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื–ืึธืœ ื–ื™ื™ืŸ ืจื™ืคึผื™ื˜ื™ื“ ืคึฟืึทืจ ื“ื™ ืฆื•ืจื™ืง ืื•ืŸ ืคืจืึธื ื˜ ื˜ื™ื™ืœืŸ ืื™ืŸ ื“ืขื•ื• ืื•ืŸ ืคึผืจืึธื“ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.

ืื™ืš ื•ื•ืขืœ ืฆื•ืฉื˜ืขืœืŸ ืกืงืจืขืขื ืฉืึธืฅ ืคื•ืŸ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก.

ื‘ืึทืงืขื ื“

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜

ืคืจืึธื ื˜ืขื ื“

ืกื™ / ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึท ืคืœืึทืฉ + ื•ื•ื™ื ืงืœื“ื™ืง ืคึผืจื•ื™ืขืงื˜
ื•ื•ื™ื›ื˜ื™ืง ืงืœืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ. ืึทืœืข URL ืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคึผืจืึทืงืกื™ื™ื“ ืฆื• ื“ื™ ืคืจืึธื ื˜ืขื ื“ ืงืึทื ื˜ื™ื™ื ืขืจ, ืึทื—ื•ืฅ ื“ื™ ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ /api/ - ื–ื™ื™ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ืคึผืจืึทืงืกื™ื“ ืฆื• ื“ื™ ืฆื•ืจื™ืง ืงืึทื ื˜ื™ื™ื ืขืจ (ืึทื–ื•ื™ ืื™ืŸ ื“ื™ ืฆื•ืจื™ืง ืงืึทื ื˜ื™ื™ื ืขืจ, ืึทืœืข ื”ืึทื ื“ืœืขืจืก ืžื•ื–ืŸ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ /api/).

ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ

ืื™ืฆื˜ ืื•ื ื“ื–ืขืจ ืคึผืœืึทืฅ ื–ืึธืœ ื–ื™ื™ืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ื‘ื™ื™ helloworld.ru ืื•ืŸ dev.helloworld.ru (ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™ ืคึผืจืึธื“- ืื•ืŸ ื“ืขื•ื•-ืขื ื•ื•ื™ืจืึธื ืžืขื ืฅ).

ืื™ืŸ ื’ืึทื ืฅ, ืžื™ืจ ื’ืขืœืขืจื ื˜ ื•ื•ื™ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ืึท ืคึผืฉื•ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืคืœืึทืกืง ืื•ืŸ ื•ื•ื™ื ืงืœื“ื™ืง ืื•ืŸ ืฉื˜ืขืœืŸ ืึท ืจืขืจื  - ืœื™ื ื™ืข ืื™ืŸ Github ืึทืงื˜ื™ืึธื ืก ืฆื• ืจืึธื•ืœื“ ืขืก ืื•ื™ืก ืฆื• ืึท ืกืขืจื•ื•ืขืจ ืคืœื™ืกื ื“ื™ืง ืคึผืœืขืกืง.

ืื™ืš ื•ื•ืขืœ ื“ื•ืคึผืœื™ืงืึทื˜ ื“ื™ ืœื™ื ืงืก ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– ืžื™ื˜ ื“ืขื ืงืึธื“: ื‘ืึทืงืขื ื“, ืคืจืึธื ื˜ืขื ื“.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’