Clir
Если кто будет искать по истории.
Помог полный резет докер десктоп, обновил его, и все поехало.
George
Mark
а как лучше настроить инфраструктуру для простого сценария статик фронтенд приложение (вьюджс если это важно) + апи + база данных? нужен ли вообще докер ? Я делал все через докер ранее, у меня был нгинкс контейнер который в себе содержал статик фронтенд + проксировал вызов на апи по /api/ , база данных отдельно захощена была в ажуре. Все соединял через докер компоуз. Задеплоено было на виртуалку но я решил что виртуалки это говно ибо все надо вручную делать, я перехожу на Azure App Services. Но думаю - нужен ли нгинкс докер контейнер вообще ? И вообще нужен ли докер? Я ведь могу к примеру хостить фронтенд с CDN , бекенд без докер контейнера хостить, база данных тоже отдельно. В общем какая лучше инфраструктура для такого ?
George
George
нет серверов - нет проблем
Mark
у меня еще апишка есть и бд
George
а бекенд в lambda/serverless functions или как оно там называется
George
бд берешь managed бд
Mark
CDN действительно я думаю лучше всего для фронта
Mark
а, понял
Mark
ну у меня бекенд такой что у него там идет постоянно бекграунд лонг поллинг, поэтому он должен постоянно работать. Я не работал с лямбдами но они кажется не подходят под такой сценарий ?
Mark
Когда нужно чтобы работало апи 24/7 что-то мониторило ?
George
George
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html
George
типа такого
George
докеры понятнее ))))
George
но это вопрос привычки скорее
Sebor▂▅▇█▓▒░
Mark
У меня 3 контейнера, я использую из-за этого докер компоуз ,а он лимитированную поддержку имеет в azure app services ( абстракция над вм с кучей фишек, не помню как на амазоне называется альтернатива)
Mark
И еще у меня просто куча проблем с ним, вот намного проще было все раздельно захостить, фронт как CDN, апи как app service
Mark
Я думал что это из за того что у меня не так много опыта с докером, но уже нормально и я выучил основы, и вижу плюс только в переносимости
Mark
Но мне переносимость навряд ли нужна будет
George
George
Ты где-то свернул не туда
Mark
Ну я имею ввиду что типа челу можно скинуть проект он просто запустит докер и у него все будет работать и не нужно ему кучу всякого ставить вручную
George
учитывая, что докер может запускаться на разных аппаратных платформах - ответ скорее нет, чем да
George
и не забывай про параметры ядра - у тебя докер их шарит с хостом и запуск какого-нибудь эластика может вызывать попоболь )
George
поэтому - да, определенную степень переносимости докер дает, но она далеко не 100%
Andrey
George
а как связаны эластик и кася ?
Andrey
Java
Andrey
Я просто действительно не понял - какая может быть боль из-за эластика докера и параметров ядра.
George
https://www.elastic.co/guide/en/elasticsearch/reference/current/_maximum_map_count_check.html
George
например в этом
Andrey
Ну так они пишут что надо настроить - чтоб всё было норм.
Andrey
Я не думаю, что запускающие эластик на железе - будут эту машину еще чем то особенным грузить. Если машина не dev.
Andrey
Ладно. Нет ясности. Надо читать :)
George
Andrey
Aleksey
Aleksey
Dan
У меня докер в проде
George
К сожалению, да ) если аккуратно, то можно
«Eugene»
freezlite
Есть некий образ назовем его base и есть Dockerfile в котором использована техника multistage, что то вроде
FROM base as base
RUN ...
FROM alpine as apline
COPY --from base ...
Делаю docker build —target base и потом вижу что образ содержит все что было в base образе, а мне нужно только часть с Dockefile от FROM BASE до FROM alpine
freezlite
Нужно это для того чтобы кэшить образы в регистре, по дефолту docker build без таргета сохраняет только последний stage и потом не кешится согласно этой статье https://pythonspeed.com/articles/faster-multi-stage-builds/
freezlite
Т.е по сути проблема в том что есть у нас Dockerfile с multistage только последний сохраняется локально и при повторном docker build он генерирует все заново потому что нет предыдущих образов и кэшей из мультистейджа
freezlite
Все еще усложнено тем что я хочу кэшить это все на разных машинах потому хочу образы кинуть в регистр, но он упаковывает все что было перед Dockerfile в base образе и занимает слишком много места(если base и так сохранен зачем сохранять его еще раз при docker build —target base)
freezlite
Unless you’re very careful, Docker’s build cache often won’t work for multi-stage builds—and that means your build is slow цитата из статьи
George
George
George
freezlite
я так и делаю, проблема в том что когда я сохраняю стадию оно тянет все слои из родительского образа и выходит образ занимает дохера места
freezlite
CUSTOM-DEBIAN -> [ Stage 1], [Stage 2] когда пытаюсь сохранить Stage 1 тянет все слои из CUSTOM-DEBIAN
freezlite
Зачем мне если у меня уже локально есть CUSTOM-DEBIAN
freezlite
docker build —target stage1
freezlite
просто у меня много образов построенных таким образом и выходит чтобы запушить stage 1 в регистр нужно очень много места и времени
freezlite
а я ожидаю что в stage 1 будет только слои которые там, т.е в от начала моего докер файла и до stage 2. А выходит как я сказал что там все что в CUSTOM-DEBIAN + Stage 1
freezlite
И я в этом уверен я тулзу скачал dive и посмотрел что в образе
freezlite
А в stage2 все как положено, только слои из stage 2
freezlite
я щас паст бин кину с примером
freezlite
https://pastebin.com/4WW9eZEU
freezlite
dive stage1 показывает что в нем есть два COPY и base.txt, нахер он там если он должен быть только в base ? dive stage 2 показывает что там 1 COPY и stage2.txt
freezlite
выходит stage 1 это суперсет из stage1 + base
freezlite
dive stage1
Здесь я ожидал что будет что то вроде FROM base и не будет COPY base.txt base.text
freezlite
(buildkit не на что не влияет, я пробовал и без него)
George
Вообще-то это ожидаемое поведение
George
George
Т.е. если ты хочешь сохранить base со всеми инструкциями, то надо сохранить target base
George
А если хочешь исходный образ, то качаешь исходный образ ) который в первом FROM
freezlite
Почему нельзя сделать FROM base(только с хэшем вместо имени) в котором уже содержится base.txt и потом ровно один COPY stage1.txt stage1.txt
freezlite
stage2 ведь так и делает, он FROM вписывает лейер из stage1 а не копирует все слои в себя
freezlite
freezlite
и он содержит те же слои как и stage1, зачем stage1 копирует слои а не использует FROM base
George