Aion
Мне кажется, что вполне можно объединять, чтобы не плодить сущности, по некоторым признакам.
а чтобы обновить отдельную часть ты будешь обновлять сразу 2е сущности?
Aion
А насколько рекомендовано деление "Один процесс - один контейнер"? У меня nginx (frontend) и toncat (backend) - я подумывал объединить.
более того я здесь вижу 3и отдельные сущности, которые должны оформляться отдельными докер образами
Aion
первая - jdk
Aion
вторая - tomcat, наследующий jdk
Aion
третья - nginx
Aion
а если у тебя из этого состоит сервис, то ты формируешь один docker-compose файл в котором описываешь как эти кусочки становятся одной сущностью - сервисом
Fomalhaut
а чтобы обновить отдельную часть ты будешь обновлять сразу 2е сущности?
Сейчас (я только изучаю докер) у меня штатные образы и nginx и tomcat, а все конфиги и проложуха подключены через волумы. Запускается всё через единый docker-compose.yaml. Они в связке, так что одновление одного выведет временно из работы другой компонент, и весь сервис в целом. Так какая разница, что одновлять, если временно будут недоступны оба?
Fomalhaut
Я пока оцениваю. Ну и стараюсь понять. 😊
Aion
так сразу с малого работаете так как требуется
Fomalhaut
Идею понял. В принципе она мне даже ближе.
Aion
чтобы потом в продакшене у вас такого не произошло
Fomalhaut
первая - jdk
А зачем отдельно ждк? Да и как, если томкат ставится сразу с ним.
Fomalhaut
Если не ошибаюсь.
Aion
собираешь образ с jdk
Aion
потом уже томпкат указав FROM jdk
Aion
потому что инструкция к установке jdk может поменяться
Aion
как и вресия jdk
Oleg
Ребят, я правильно понимаю что nginx-proxy не поодерживает разные location?
Aion
и это не должно ни каким образом аффектить на сборку образа tomcat
Andrey
А как быть с исходниками которые нужно еще собирать? Ну типо фронта на JS или бекенда которому нужен для сборки composer?
Aion
темболее jdk у вас может использоваться для других проектов
Aion
один собирает артефакт
Aion
второй его использует
Aion
после сборки контейнер сносится
Andrey
можно в одном докерфайле описывать сразу 2а контейнера
Т.е. я создаю volume контейнер с исходниками и беру еще один контейнер с тем же composer например. Монтирую volume в composer, собираю и отдаю volume контейнер уже на прод. Верно?
Aion
нет
Aion
копируешь исходники в инструкции докерфайла
Aion
собираешь
Aion
описываешь второй контейнер и пишешь в нем, чтобы он забрал каталог с артефактом из контейнера описанного ранее
Andrey
описываешь второй контейнер и пишешь в нем, чтобы он забрал каталог с артефактом из контейнера описанного ранее
А как это "забрал"? Ну я имею в виду в рамках работающего CI, когда сборка артефакта и запуск на том же проде могут происходить на абсолютно разных серверах.
Aion
вы пропустили тот факт что я говорю о работе с одним докерфайлом
Aion
FROM nodejs:8 AS build_env COPY ./ui /home/frontend WORKDIR /home/frontend #RUN yarn && yarn run build:dcb RUN yarn && yarn run build CMD ["bash", "-c", "yarn run server"] FROM nginx:latest ENV version 0.0.1 # Copy art from build-env RUN mkdir /var/www/dist WORKDIR /var/www/dist COPY --from=build_env /home/frontend/dist . COPY frontend.conf /etc/nginx/sites-enabled CMD ["nginx", "-g", "daemon off;"]
Andrey
FROM nodejs:8 AS build_env COPY ./ui /home/frontend WORKDIR /home/frontend #RUN yarn && yarn run build:dcb RUN yarn && yarn run build CMD ["bash", "-c", "yarn run server"] FROM nginx:latest ENV version 0.0.1 # Copy art from build-env RUN mkdir /var/www/dist WORKDIR /var/www/dist COPY --from=build_env /home/frontend/dist . COPY frontend.conf /etc/nginx/sites-enabled CMD ["nginx", "-g", "daemon off;"]
Ага, понял, спасибо. А если делать похожее в рамках CI? Т.е. собирать в одном контейнере, а запускать в другом. Ну чтоб не тащить npm gulp и вот это вот все в продовый контейнер, мне нужно работать с volume контейнером?
Aion
нет
Aion
вам надо работать с артифактами в рамках вашей CI системы
Aion
задача 1) Собрать артифакт
Aion
задача 2) протестировать артифакт
Aion
задача 3) Деплой
Aion
сначала решите- что есть ваш артифакт
Aion
в идеале артифакт в концеплции контейнеров - контейнер
Andrey
сначала решите- что есть ваш артифакт
Получается если говорить о сайтиках то артифактов 2. 1) Собранный фронт 2) Собранный бек оба представляют из себя просто пачку файлов.
Aion
в идеале - нет
Aion
для начала - возможно
Andrey
А как в идеале? Архивы?
Aion
вы должны стремиться к тому, чтобы ваш backend был образом: <proj_name>_backend:latest
Aion
и через docker-registry деплоиться на стенд
Andrey
Да, я вроде как этого и хочу. Просто не совсем понимаю что класть в этот образ кроме кода. Пыха отдельный контейнер, nginx тоже.
Aion
нет
Aion
контейнер = процесс
Aion
какой процесс выпоняет ваш код?
Aion
для java = jre
Aion
для js = вебсервер (apache2, nginx...)
Aion
для пхп = php-fpm/ новый nginx
Andrey
какой процесс выпоняет ваш код?
никакого) Это просто набор php скриптов которые выполняются в контейнере php-fpm при запросе от контенера nginx
Aion
ну вот и экврика у вас есть контейнер с php-fpm
Andrey
Вот вроде как и да, а вроде как и нет. Если у меня будет 10 сайтов, зачем плодить пыху?
Aion
потому что это 10 сервисов
Aion
модульность как соблюдать?
Aion
разные версии fpm как использовать?
Andrey
ну да. Зачем мне 10 процессов пыхи если все сайты могут работать на одной
Aion
зачем вам виртуалки и контейнеры? Когда можно все запустить на одной железке?
Sergey
зачем мне 10 процессов пыхи, если можно просто не юзать пыху
Andrey
зачем мне 10 процессов пыхи, если можно просто не юзать пыху
дада и поставить линукс и тд и тп. Не об этом сейчас)
Sergey
ыы
Andrey
зачем вам виртуалки и контейнеры? Когда можно все запустить на одной железке?
Потому что есть еще и джава и питон. И весь этот зоопарк хочется оч быстро катать между окружениями
Aion
у пайтона есть virt-env
Aion
у java есть спринг
Aion
катай - не хочу
Andrey
у пайтона есть virt-env
Есть но это не про бинарные либы. Туда только питонячьи ставятся.
Andrey
у java есть спринг
А спринг чего? У нас кластер спарка, спринг тут не особо поможет)
Aion
еще раз - в идеале один процесс - один контейнер
Aion
один сайт = один процесс
Aion
а так можно и слона как мартышку на дерево втащить
Aion
но зачем?
Andrey
Да согласен в принципе. Вот и хочу понять, надо оно мне или нет. Понятно что тем же ансиблом это все можно зарешать.
Andrey
Вот смотрите, один сайт = один процесс. Но сайт состоит из фронта и бека. Которые собираются по разному и лежат в разных местах. По нормальному мне бы надо фронт монтировать напрямую в nginx, а бек в пыху. Это ок?
Aion
сервис мб