1. Куча / Говнокод #27250

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    Объясните, как правильно разрабатывать в 2021 году
    
    Есть один продукт, состоящий из сайта, сервера и БД, связывающей их.
    Сайт на PHP, с микрофреймворком, устанавливаемым через composer, отображающий данные из БД
    Сервер - программа, слушающая порт из свой конфигурации и записывающая в БД
    
    Таковы потребности, что на один сервер может быть установлено одна и более изолированных копий этого продукта (сервер + сайт + БД), а серверов несколько.
    Сайты разделяют через виртуальные хосты nginx, сервера по портам, БД по имени.
    Может случиться такое, что нужно остановить сайт или сервер, оставив второе работать.
    
    Проблема в том, что развёртывание делается вручную переносом копий файлов, что доставляет страданий.
    На серверах за всё время образовался бардак в конфигурациях
    
    Что здесь нужно? Kubernetes, swarm, docker, docker-compose?
    
    Проблема в том, что никогда не приходилось внедрять такое самостоятельно.
    Смотрю в сторону docker-compose, но везде инструкции только для одного экземпляра продукта на одном сервере (или я чего-то не понимаю)
    
    Объясните, пожалуйста, по-хорошему, что делать в таком случае

    Запостил: Крендель, 11 Февраля 2021

    Комментарии (18) RSS

    • Уже 5 часов прошло, а человеку не ответили. SLA нарушен.
      Ответить
    • Да, докер тебе подойдёт, и как раз с него тебе нужно начать. Твоя задача сделать несколько контейнеров под стек. По всей видимости тебе понадобятся контейнер для сайта на пхп (там же будет и свой хттп сервер, чисто для пхп), ещё один контейнер для того, что названо в оп посте сервером, и третий для базы.

      Для каждого сервиса у тебя получится свой докерфайл, и лучше постараться использовать готовый с докерхаба. Гиганты типа nginx, php и СУБД разумеется имеют там свои "официальные" докерфайлы, от которых можно форкаться через FROM, и порой даже ничего больше и делать не надо, если подбросить исходники в нужный вольюм.

      docker-compose тебе нужен чтобы не ебаться с контейнерами вручную, приложение из нескольких контейнеров будет запускаться разом и в одной виртуальной сети, контейнеры друг друга видят, а другие не видят. После запуска можно будет один контейнер перезапустить спокойно, или убить, не трогая остальные. Насколько я знаю, можно докер-композом запускать и несколько инстансов приложения, но если тебе нужно развести это все по портам, доменам и машинам, лучше использовать кубернетис, он как раз для этого и есть, там можно обновляться без даунтайма, задавать сложные правила для маршрутизации между инстансами, распределения нагрузки и так далее.
      Ответить
      • Основная ебля будет наверное в том, что инстансам одного приложения нужны вроде как разные конфиги. Кубер должен это уметь, иначе оно нахуй не нужно. Но даже в худшем случае, если у тебя все конфиги - это файлы, ты уже можешь сэкономить, и запускать экземпляры одного приложения, подбрасывая разные конфиги через вольюмы. Это уже как минимум не целая копия всего приложения, а только копия конфигов. То есть, если тебе не захочется ебаться с кубером или ситуация будет проще, чем та, для которой он нужен (типа, копий приложения несколько, но они полностью независимы и друг с другом вообще не взаимодействуют), то ты спокойно можешь ограничиться docker-compose и обмазаться говноскриптами для говнозапуска всей хуйни, роняния всей хуйни, и ещё парочки типа роняния одной хуйни и перезапуска другой. И все это себе на кнопочки в jenkins (который скоро умрёт).
        Ответить
        • > который скоро умрёт

          свежо предание...
          одна из моих NIH-мечт - это написать, блядь, нормальный CI, но хуй же там был
          Ответить
      • > о всей видимости тебе понадобятся контейнер для сайта на пхп (там же будет и свой хттп сервер, чисто для пхп)

        по феншую поднимать fcgi и к нему коннектиться нгинксом. но там заёб со всеми этими переменными.
        Ответить
    • нужен докер компос, который развернет субд, сервер приложений php (fpm) и nginx.
      Ответить

    Добавить комментарий