рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
рдпрд╕ рд▓реЗрдЦрдорд╛, рдо Plesk рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓ рд░ Github рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ CI/CD рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреЗрдЫреБред рдЖрдЬ рд╣рд╛рдореА "Helloworld" рдирд╛рдордХреЛ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдиреЗ рдЫреМрдБред рдпреЛ рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдЗрдерди рдлреНрд░реЗрдорд╡рд░реНрдХрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рд╕реЗрд▓рд░реА рдХрд╛рдорджрд╛рд░рд╣рд░реВ рд░ рдПрдЩреНрдЧреБрд▓рд░ 8 рдлреНрд░рдиреНрдЯрдПрдиреНрдбрд╕рдБрдЧред

рднрдгреНрдбрд╛рд░рд╣рд░реВрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ: рдмреНрдпрд╛рдХрдЗрдиреНрдб, рдЕрдЧрд╛рдбрд┐рдХреЛ рднрд╛рдЧ.

рд▓реЗрдЦрдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░ рдпрд╕рдХреЛ рднрд╛рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреЗрдЫреМрдВред рджреЛрд╕реНрд░реЛрдорд╛, рд╣рд╛рдореА рдХрд╕рд░реА Plesk рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рд░ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ (DB, RabbitMQ, Redis, Docker, рдЖрджрд┐) рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред

рддреЗрд╕реНрд░реЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореА рдЕрдиреНрддрддрдГ рд╣рд╛рдореНрд░реЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд▓рд╛рдИ рд╕рд░реНрднрд░рдорд╛ рдбреЗрдн рд░ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╕рд░реА рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд╕рд░реНрднрд░рдорд╛ рд╕рд╛рдЗрдЯ рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВред

рд░ рд╣реЛ, рдореИрд▓реЗ рдЖрдлреНрдиреЛ рдкрд░рд┐рдЪрдп рджрд┐рди рдмрд┐рд░реНрд╕реЗрдВред рдореЗрд░реЛ рдирд╛рдо рдУрд▓реЗрдЧ рдмреЛрд░реНрдЬреЛрдн рд╣реЛ, рдо Domclick рдорд╛ рдореЛрд░реНрдЯрдЧреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ CRM рдЯреЛрд▓реАрдорд╛ рдлреБрд▓рд╕реНрдЯреНрдпрд╛рдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдБред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдкрд╣рд┐рд▓реЗ, рджреБрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдгреНрдбрд╛рд░рд╣рд░реВ рд╣реЗрд░реМрдВ - рдмреНрдпрд╛рдХрдПрдиреНрдб рд░ рдЕрдЧрд╛рдбрд┐ - рд░ рдХреЛрдбрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред

рдмреНрдпрд╛рдХрдПрдиреНрдб: рдлреНрд▓рд╛рд╕реНрдХ+рд╕реЗрд▓реЗрд░реА

рдкрдЫрд╛рдбрд┐рдХреЛ рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рдПрдЙрдЯрд╛ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдПрдБ рдЬреБрди рдкрд╛рдЗрдерди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдмреАрдЪ рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдп рдЫ: рдлреНрд▓рд╛рд╕реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдПрдкреАрдЖрдИрдХреЛ рд▓рд╛рдЧрд┐) рд░ рд╕реЗрд▓реЗрд░реА (рдХрд╛рд░реНрдп рд▓рд╛рдордХреЛ рд▓рд╛рдЧрд┐)ред SQLAchemy ORM рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред Alembic рдорд╛рдЗрдЧреНрд░реЗрд╕рди рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╣реНрдпрд╛рдиреНрдбрд▓рд╣рд░реВрдорд╛ JSON рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ - Marshmallowред

╨Т рднрдгреНрдбрд╛рд░рд╣рд░реВ рддреНрдпрд╣рд╛рдБ рдПрдХ Readme.md рдлрд╛рдЗрд▓ рдЫ рдЬрд╕рдорд╛ рд╕рдВрд░рдЪрдирд╛рдХреЛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд▓рд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЫрдиреНред

рд╡реЗрдм рдкрд╛рд░реНрдЯ API рдПрдХрджрдо рд╕рд░рд▓, 6 рдХрд▓рдо рд╕рдорд╛рд╡реЗрд╢:

  • /ping - рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди;
  • рджрд░реНрддрд╛, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдбрд┐-рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд░ рдЕрдзрд┐рдХреГрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╣реНрдпрд╛рдиреНрдбрд▓рд╣рд░реВ;
  • рдПрдЙрдЯрд╛ рдЗрдореЗрд▓ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЬрд╕рд▓реЗ рд╕реЗрд▓рд░реА рд▓рд╛рдордорд╛ рдХрд╛рд░реНрдп рд░рд╛рдЦреНрдЫред

рдЕрдЬрд╡рд╛рдЗрди рднрд╛рдЧ рдЕрдЭ рд╕рдЬрд┐рд▓реЛ, рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдЫ 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 рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреАред

рд░ рд╣рд╛рдореАрд▓реЗ рд░реБрдЪрд┐ рд░рд╛рдЦреЗрдХреЛ рдЕрдиреНрддрд┐рдо рдлреЛрд▓реНрдбрд░ - ci-cdред рдпрд╕рд▓реЗ рддреИрдирд╛рддреАрдХрд╛ рд▓рд╛рдЧрд┐ рд╢реЗрд▓ рд▓рд┐рдкрд┐рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

  • deploy.sh - рдорд╛рдЗрдЧреНрд░реЗрд╕рди рд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд╕реБрд░реБрд╡рд╛рддред Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдирд┐рд░реНрдорд╛рдг рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдг рдкрдЫрд┐ рд╕рд░реНрднрд░рдорд╛ рдЪрд▓реНрдЫ;
  • rollback.sh - рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд░реЛрд▓рдмреНрдпрд╛рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛;
  • curl_tg.sh - рдЯреЗрд▓реАрдЧреНрд░рд╛рдордорд╛ рддреИрдирд╛рддреА рд╕реВрдЪрдирд╛рд╣рд░реВ рдкрдард╛рдЙрдБрджреИред

Angular рдорд╛ Frontend

рдЕрдЧрд╛рдбрд┐ рд╕рдВрдЧ рднрдгреНрдбрд╛рд░ рдмреЗрдХрдХреЛ рднрдиреНрджрд╛ рдзреЗрд░реИ рд╕рд░рд▓ред рдЕрдЧрд╛рдбрд┐ рддреАрди рдкреГрд╖реНрдард╣рд░реВ рд╣реБрдиреНрдЫрдиреН:

  • рдИрдореЗрд▓ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рд░рдо рд░ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдмрдЯрди рднрдПрдХреЛ рдореБрдЦреНрдп рдкреГрд╖реНрдаред
  • рд▓рдЧрдЗрди рдкреГрд╖реНрдаред
  • рджрд░реНрддрд╛ рдкреГрд╖реНрдаред

рдореБрдЦреНрдп рдкреГрд╖реНрда рддрдкрд╕реНрд╡реА рджреЗрдЦрд┐рдиреНрдЫ:

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
рд░реВрдЯрдорд╛ рджреБрдИ рдлрд╛рдЗрд▓рд╣рд░реВ рдЫрдиреН Dockerfile ╨╕ docker-compose.yml, рд╕рд╛рдереИ рдкрд░рд┐рдЪрд┐рдд рдлреЛрд▓реНрдбрд░ .ci-cd рдмреНрдпрд╛рдХ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рддреБрд▓рдирд╛рдорд╛ рдереЛрд░реИ рдереЛрд░реИ рд▓рд┐рдкрд┐рд╣рд░реВрд╕рдБрдЧ (рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд▓рд┐рдкрд┐рд╣рд░реВ рд╣рдЯрд╛рдЗрдпреЛ)ред

Plesk рдорд╛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реБрд░реБ рдЧрд░реНрджреИ

Plesk рд╕реЗрдЯ рдЕрдк рдЧрд░реЗрд░ рд░ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ рд╕реБрд░реБ рдЧрд░реМрдВред

рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

Plesk рдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ:

  • Docker Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рджреГрд╢реНрдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди;
  • Git рд╕рд░реНрднрд░рдорд╛ рддреИрдирд╛рддреА рдЪрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди;
  • Let's Encrypt рдирд┐:рд╢реБрд▓реНрдХ TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди (рд░ рд╕реНрд╡рдд: рдирд╡реАрдХрд░рдг)
  • Firewall рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиред

рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрдХреНрд╕рдирдорд╛ Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓ рдорд╛рд░реНрдлрдд рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
рд╣рд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддреГрдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдбреЗрдореЛ рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрдиреЗрдЫред

рд╕рджрд╕реНрдпрддрд╛ рд░ рд╕рд╛рдЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЕрд░реНрдХреЛ, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ helloworld.ru рд╡реЗрдмрд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рддреНрдпрд╣рд╛рдБ dev.helloworld.ru рд╕рдмрдбреЛрдореЗрди рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

  1. helloworld.ru рдбреЛрдореЗрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрдЗрди-рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
    рдкреГрд╖реНрдардХреЛ рддрд▓рдХреЛ рдмрд╛рдХрд╕ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН Let's Encrypt рдХреЛ рд╕рд╛рде рдбреЛрдореЗрди рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНрдпрджрд┐ рд╣рд╛рдореА рд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ HTTPS рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  2. рдЕрд░реНрдХреЛ, рдпреЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛, рдПрдЙрдЯрд╛ рд╕рдмрдбреЛрдореЗрди dev.helloworld.ru рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдГрд╢реБрд▓реНрдХ TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрдирд┐ рдЬрд╛рд░реА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ):

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

рд╕рд░реНрднрд░ рдЕрд╡рдпрд╡рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рд╣рд╛рдореАрд╕рдБрдЧ рд╕рд░реНрднрд░ рдЫ рдУрдПрд╕ рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ реп.резреи рд░ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓ Plesk Obsidian 18.0.27.

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • PostgreSQL (рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛, рддреНрдпрд╣рд╛рдБ dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд▓рд╛рдЧреА рджреБрдИ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдВрдЧ рдПрдХ рд╕рд░реНрднрд░ рд╣реБрдиреЗрдЫ)ред
  • RabbitMQ (рдПрдЙрдЯреИ, рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдлрд░рдХ vhosts рд╕рдВрдЧ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг)ред
  • рджреБрдИ Redis рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ (dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐)ред
  • рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА (рдмрдирд╛рдЗрдПрдХреЛ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВрдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐)ред
  • рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдХреЛ рд▓рд╛рдЧрд┐ UIред

PostgreSQL

Plesk рдкрд╣рд┐рд▓реЗ рдиреИ PostgreSQL DBMS рд╕рдБрдЧ рдЖрдЙрдБрдЫ, рддрд░ рдкрдЫрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЗрди (Plesk Obsidian рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛ рд╕рдорд░реНрдерд┐рдд Postgres рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ 8.4-10.8)ред рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рдиреНрдЫреМрдВ (рдпрд╕ рд▓реЗрдЦрдирдХреЛ рд╕рдордпрдорд╛ 12.3), рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред

рдиреЗрдЯрдорд╛ рдбреЗрдмрд┐рдпрдирдорд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЫрдиреН (рдПрдХ рдЙрджрд╛рд╣рд░рдг), рддреНрдпрд╕реИрд▓реЗ рдо рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрджрд┐рди, рдо рдХреЗрд╡рд▓ рдЖрджреЗрд╢рд╣рд░реВ рджрд┐рдиреЗрдЫреБ:

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 рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдЕрдм рдПрдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ, 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

рдЦрд░рдЧреЛрд╢ MQ

рд╕реЗрд▓рд░реАрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдиреНрджреЗрд╢ рдмреНрд░реЛрдХрд░, 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ред рдпрд╕рд▓рд╛рдИ рд╕реЗрд▓реЗрд░реА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫред

рд╣рд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ Redis рд╕рдБрдЧ рджреБрдИ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЙрдард╛рдЙрдиреЗрдЫреМрдВ Docker Plesk рдХреЛ рд▓рд╛рдЧреАред

  1. рд╣рд╛рдореА Plesk рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ, рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рди рд╕реЗрдХреНрд╕рдирдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдбрдХрд░ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдЦреЛрдЬреНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐: рд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рд┐рдиреНрдЫ):

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  2. рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдЦреЛрдЬ рдорд╛рд░реНрдлрдд рдЫрд╡рд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН redis bitnami рд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрдирд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  3. рд╣рд╛рдореА рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрдЫреМрдВ: рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрдзрд┐рдХрддрдо рдЖрд╡рдВрдЯрд┐рдд RAM рдЖрдХрд╛рд░, рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рдорд╛ рдкрд╛рд╕рд╡рд░реНрдб, рд░ рднреЛрд▓реНрдпреБрдо рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  4. рд╣рд╛рдореА рдкреНрд░реЛрдб рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ 2-3 рдЪрд░рдгрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдЫреМрдВ, рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рд╣рд╛рдореА рдХреЗрд╡рд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ: рдкреЛрд░реНрдЯ, рдкрд╛рд╕рд╡рд░реНрдб, RAM рд╕рд╛рдЗрдЬ рд░ рд╕рд░реНрднрд░рдорд╛ рднреЛрд▓реНрдпреБрдо рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреЗ рдмрд╛рдЯреЛ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА

рдЖрдзрд╛рд░рднреВрдд рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╕рд░реНрднрд░рдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдбрдХрд░ рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░ рд░рд╛рдЦреНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рд╕рд░реНрднрд░ рд╕реНрдкреЗрд╕ рдЕрдм рдПрдХрджрдо рд╕рд╕реНрддреЛ рдЫ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдПрдХ DockerHub рд╕рджрд╕реНрдпрддрд╛ рднрдиреНрджрд╛ рд╕рд╕реНрддреЛ), рд░ рдПрдХ рдирд┐рдЬреА рднрдгреНрдбрд╛рд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫред

рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ:

  • рдкрд╛рд╕рд╡рд░реНрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдбрдХрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕рдмрдбреЛрдореЗрдирдорд╛ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп https://docker.helloworld.ru;
  • рднрдгреНрдбрд╛рд░рдорд╛ рдЫрд╡рд┐рд╣рд░реВ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ UI, рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ https://docker-ui.helloworld.ru.

рдпреЛ рдЧрд░реНрди:

  1. рд╣рд╛рдореНрд░реЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛ Plesk рдорд╛ рджреБрдИрд╡рдЯрд╛ рд╕рдмрдбреЛрдореЗрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ: 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 рд╕рдмрдбреЛрдореЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

рдЦрдгреНрдб рджреЗрд╡ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯ рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдбрдХрд░ рдкреНрд░реЛрдХреНрд╕реА рдирд┐рдпрдо:

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
рд░ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН:

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  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 subdomain рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдкрдирд┐ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
    рдЬрдм рддрдкрд╛рдЗрдБ рдмреНрд░рд╛рдЙрдЬ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдмреНрд░рд╛рдЙрдЬрд░рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдиреНрдбреЛ рджреЗрдЦрд╛рдЙрдиреЗрдЫ рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореА рднрдгреНрдбрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрдардорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣реБрдиреЗрдЫреМрдВ (рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдЦрд╛рд▓реА рд╣реБрдиреЗрдЫ):

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

Plesk рдлрд╛рдпрд░рд╡рд╛рд▓рдорд╛ рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрджреИ

рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд░ рдмрд╛рд╣реНрдп рдиреЗрдЯрд╡рд░реНрдХрдмрд╛рдЯ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫрдиреНред

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдХреЛ Plesk рдХреЛ рд▓рд╛рдЧреА рдлрд╛рдпрд░рд╡рд╛рд▓ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реМрдВред

  1. рдЬрд╛рдК рддреНрдпрд╣рд╛рдБ рдЙрдкрдХрд░рдг рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ > рд╕реЗрдЯрд┐рдЩрд╣рд░реВ > рдлрд╛рдпрд░рд╡рд╛рд▓:
    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
  2. рдЬрд╛рдК рддреНрдпрд╣рд╛рдБ Plesk рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдорд╣рд░реВ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН > рдЕрдиреБрдХреВрд▓рди рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН рд░ рдбрдХрд░ рд╕рдмрдиреЗрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдореНрди TCP рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    рд░реЗрдбрд┐рд╕: 32785, 32786

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  3. рд╣рд╛рдореА рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдорд╛ PostgreSQL рдкреЛрд░реНрдЯрд╣рд░реВ рд░ RabbitMQ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрдпрд╛рдирд▓рд╣рд░реВ рдЦреЛрд▓реНрдиреЗ рдирд┐рдпрдо рдкрдирд┐ рдердкреНрдиреЗрдЫреМрдВ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  4. рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмрдЯрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рдпрдорд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ

рд╕рдмреИрднрдиреНрджрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рднрд╛рдЧрдорд╛ рдЬрд╛рдФрдВ - рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рд░ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рд░реНрднрд░рдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрдиреЗред

рдпреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреБрдИ рднрд╛рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫ:

  • рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ (рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХрд╛ рд▓рд╛рдЧрд┐) - Github рд╕рд╛рдЗрдбрдорд╛;
  • рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди (рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐) рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрджреИ - рд╕рд░реНрднрд░рдорд╛ред

Plesk рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкрд╣рд┐рд▓реЗ рджреЛрд╕реНрд░реЛ рдмрд┐рдиреНрджреБрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реМрдВ (рдХрд┐рдирдХрд┐ рдкрд╣рд┐рд▓реЛ рдпрд╕рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ)ред

рд╣рд╛рдореА Plesk рдХреЛ рд▓рд╛рдЧреА Git рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВред

рдмреНрдпрд╛рдХрдПрдиреНрдб рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

  1. рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ Helloworld рд╡реЗрдмрд╕рд╛рдЗрдЯрдХреЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ Git рдЙрдкрдЦрдгреНрдбрдорд╛ рдЬрд╛рдиреНрдЫреМрдВ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  2. "рд░рд┐рдореЛрдЯ рдЧрд┐рдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА" рдлрд┐рд▓реНрдбрдорд╛ рд╣рд╛рдореНрд░реЛ Github рднрдгреНрдбрд╛рд░рдорд╛ рд▓рд┐рдЩреНрдХ рдШреБрд╕рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлреЛрд▓реНрдбрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред httpdocs рдЕрд░реНрдХреЛрд▓рд╛рдИ (рдЬрд╕реНрддреИред /httpdocs/hw_back):

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  3. рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдмрд╛рдЯ SSH рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдердкреНрдиреБрд╣реЛрд╕реН рдпреЛ Github рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдЫред
  4. рдЪрд░рдг 2 рдорд╛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдареАрдХ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд▓рд╛рдИ Plesk рдорд╛ рднрдгреНрдбрд╛рд░ рдкреГрд╖реНрдардорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░рд┐рдиреЗрдЫред рдЕрдм рд╣рд╛рдореАрд▓реЗ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдорд╛ рдХрдорд┐рдЯрд╣рд░реВрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рднрдгреНрдбрд╛рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрди, рдЬрд╛рдиреБрд╣реЛрд╕реН рднрдгреНрдбрд╛рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд░ рдореВрд▓реНрдп рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН Webhook URL (рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдкрдЫрд┐ рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрдиреЗрдЫ):

    рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

  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} - рд╡рд╛рддрд╛рд╡рд░рдг (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
  6. рд╣рд╛рдореНрд░реЛ рд╕рджрд╕реНрдпрддрд╛рдмрд╛рдЯ рдбрдХрд░ рд╕рдореВрд╣рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдердкреНрдиреБрд╣реЛрд╕реН (рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдЫрдиреН):
    sudo usermod -aG docker helloworld_admin

рдмреНрдпрд╛рдХрдЗрдиреНрдб рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд░ рдлреНрд░рдиреНрдЯрдПрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐ dev рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдорд╛рди рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░рд┐рдПрдХреЛ рдЫред

Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рддреИрдирд╛рддреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди

Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рд╣рд╛рдореНрд░реЛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред

рдмреНрдпрд╛рдХрдЗрдиреНрдб

рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ deploy.yml рдлрд╛рдЗрд▓.

рддрд░ рдпрд╕рд▓рд╛рдИ рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓рд╛рдИ Github рдорд╛ рдЪрд╛рд╣рд┐рдиреЗ рдЧреЛрдкреНрдп рдЪрд░рд╣рд░реВ рднрд░реМрдВред рдпреЛ рдЧрд░реНрди, рдЬрд╛рдиреБрд╣реЛрд╕реН рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВ -> рдЧреЛрдкреНрдп:

  • DOCKER_REGISTRY - рд╣рд╛рдореНрд░реЛ рдбрдХрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЛ рд╣реЛрд╕реНрдЯ (docker.helloworld.ru);
  • DOCKER_LOGIN - рдбрдХрд░ рднрдгреНрдбрд╛рд░рдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • DOCKER_PASSWORD - рдпрд╕рд▓рд╛рдИ рдкрд╛рд╕рд╡рд░реНрдб;
  • DEPLOY_HOST - рд╣реЛрд╕реНрдЯ рдЬрд╣рд╛рдБ Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓ рдЙрдкрд▓рдмреНрдз рдЫ (рдЙрджрд╛рд╣рд░рдг: helloworld.ru: рекреж рд╡рд╛ 123.4.56.78реорекрекрей);
  • DEPLOY_BACK_PROD_TOKEN - рд╕рд░реНрднрд░рдорд╛ рдкреНрд░реЛрдб-рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЯреЛрдХрди (рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ Plesk p. 4 рдорд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдорд╛ рдкрд╛рдпреМрдВ);
  • DEPLOY_BACK_DEV_TOKEN - рд╕рд░реНрднрд░рдорд╛ рдбреЗрдн рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЯреЛрдХрдиред

рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рдЫ рд░ рддреАрди рдореБрдЦреНрдп рдЪрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:

  • рд╣рд╛рдореНрд░реЛ рднрдгреНрдбрд╛рд░рдорд╛ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрджреИ;
  • рднрд░реНрдЦрд░реИ рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджреИ;
  • рд╢рд╛рдЦрд╛ (dev/master) рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЗрдЪреНрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддреИрдирд╛рддреАред

рдлреНрд░рдиреНрдЯрдЗрдиреНрдб

рдЕрдЧрд╛рдбрд┐рдХреЛ рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ deploy.yml рдлрд╛рдЗрд▓ рдмреЗрдХрдХреЛ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдлрд░рдХред рдпрд╕рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рд╛рде рдПрдХ рдЪрд░рдгрдХреЛ рдХрдореА рдЫ рд░ рддреИрдирд╛рддреАрдХрд╛ рд▓рд╛рдЧрд┐ рдЯреЛрдХрдирд╣рд░реВрдХреЛ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫред рдЕрдЧрд╛рдбрд┐ рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдЧреЛрдкреНрдпрд╣рд░реВ, рд╡реИрд╕реЗ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╕рд╛рдЗрдЯ рд╕реЗрдЯрдЕрдк

Nginx рдорд╛рд░реНрдлрдд рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрджреИ

рдЦреИрд░, рд╣рд╛рдореА рдЕрдиреНрддреНрдпрдорд╛ рдЖрдПрдХрд╛ рдЫреМрдВред рдпреЛ Nginx рдорд╛рд░реНрдлрдд рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЖрдЧрдорди рд░ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдкреНрд░реЛрдХреНрд╕реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдорд╛рддреНрд░ рдмрд╛рдБрдХреА рдЫред рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗрдЯрдЕрдкрдХреЛ рдЪрд░рдг 5 рдорд╛ рдХрднрд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдкрдЫрд╛рдбрд┐ рд░ рдЕрдЧрд╛рдбрд┐ рднрд╛рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрд╣реА рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рд╣реБрдиреБрдкрд░реНрдЫред

рдо рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВрдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗрдЫреБред

рдмреНрдпрд╛рдХрдЗрдиреНрдб

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD

рдлреНрд░рдиреНрдЯрдЗрдиреНрдб

рдлреНрд▓рд╛рд╕реНрдХ+рдПрдЩреНрдЧреБрд▓рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD
╨г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ ╤Г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ред рд╕рдмреИ URL рд▓рд╛рдИ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░рд┐рдиреЗ рдЫ, рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рдмрд╛рд╣реЗрдХ /api/ - рддрд┐рдиреАрд╣рд░реВ рдкрдЫрд╛рдбрд┐рдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рд╣реБрдиреЗрдЫрдиреН (рддреНрдпрд╕реИрд▓реЗ рдкрдЫрд╛рдбрд┐рдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛, рд╕рдмреИ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рд╕реБрд░реБ рд╣реБрдиреБрдкрд░реНрдЫ /api/).

рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рдЕрдм рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯ helloworld.ru рд░ dev.helloworld.ru (рдХреНрд░рдорд╢рдГ prod- рд░ dev-environments) рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреБрдкрд░реНрдЫред

рдХреБрд▓ рдорд┐рд▓рд╛рдПрд░, рд╣рд╛рдореАрд▓реЗ рдлреНрд▓рд╛рд╕реНрдХ рд░ рдПрдЩреНрдЧреБрд▓рд░рдорд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХрд╕рд░реА рддрдпрд╛рд░ рдЧрд░реНрдиреЗ рд░ Plesk рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рд░реНрднрд░рдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди Github Actions рдорд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдпреМрдВред

рдо рдХреЛрдбрдХреЛ рд╕рд╛рде рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ рдирдХреНрдХрд▓ рдЧрд░реНрдиреЗрдЫреБ: рдмреНрдпрд╛рдХрдЗрдиреНрдб, рдЕрдЧрд╛рдбрд┐рдХреЛ рднрд╛рдЧ.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди