Gleb
А чем не подходит dockerfile ?
Ну в основном первым пунктом - нет удобного кэша через volume на этапе сборки.
Gleb
У нас node_modules весят 1.5Гб и устанавливаются около 6 минут, что ну как бы печально. Там же потом ещё бандлы wrbpack'ом должны собраться и тесты пройти. Ждать 15 минут до раскатки образа на staging такое себе удовольствие.
Artem
делай билд отдельным слоем
Artem
https://vsupalov.com/cache-docker-build-dependencies-without-volume-mounting/
Gleb
ADD ./package.json /app/package.json ADD ./package-lock.json /app/package-lock.json RUN yarn install
Ток зачем package-lock, если это yarn?) У нас yarn терял куски зависимостей, кстати. Вопрос в том, что в этом варианте npm/yarn всё равно будет качать пакеты по сети, у него нет расшаренной папки кэша .npm
Дмитрий
Что делать, если контейнер не удаляется? ERROR: for droneconfiguration_drone-server_1 unable to remove filesystem for 24ebd3768e39ae06fabe2198ace3a8a2538545cf5c528dc4223dcf2e818ea37e: remove /var/lib/docker/containers/24ebd3768e39ae06fabe2198ace3a8a2538545cf5c528dc4223dcf2e818ea37e/mounts/shm: device or resource busy
Алексей
Ток зачем package-lock, если это yarn?) У нас yarn терял куски зависимостей, кстати. Вопрос в том, что в этом варианте npm/yarn всё равно будет качать пакеты по сети, у него нет расшаренной папки кэша .npm
1. замени в куске кода лок с нпм на ярн 2. Это будет отдельный слой, который будет выкчивать только если изменились зависимости
Алексей
вариант №2, entrypoint.sh монтируешь node_modules или его кэш и ставишь зависимости
Artem
если это какая нибудь aufs или devicemapper драйвером, то такие баги там бывают
Gleb
для начала рестартануть демон докера
Ток я бы рекомендовал попробовать SIGHUP послать, а потом уже пробовать рестартовать если это прод.
Дмитрий
если это какая нибудь aufs или devicemapper драйвером, то такие баги там бывают
А если это сервер где лучше не трогать другие контейнеры?
Gleb
вариант №2, entrypoint.sh монтируешь node_modules или его кэш и ставишь зависимости
Ну это очень такое себе решение, легче сделать тулзу, которая заменит/расширит dockerfile. Есть же docker commit и нативный docker build так же и работает.
Дмитрий
Artem
Глянь для начала какой драйвер фс выбран через docker info
Дмитрий
Хм, странно
Дмитрий
Образ отпустило
Дмитрий
И смог сделать docker rm
Artem
ну значит обошлось малой кровью, а так если фс поедет, то там без очистки /var/lib/docker не обойтись
Bohdan
господа. а не подскажите как сертабота прикрутить к докеру?
Bohdan
nginx контейнер уже крутиться в компосе
Aler
Подскажите, пожалуйста, правильно ли я понимаю, что если создаю сеть в докере типа bridge и указываю gateway, то по этому адресу будет хост машина для контейнеров?
Aler
мне надо чтобы контейнер бился в хост
Aler
у меня открыт сокет на хост машине и слушает 127.0.0.1:9001. Я хочу чтобы к нему подключился сокет из контейнера
Aler
я пишу <gateway_ip>:9001
Sergey
а можно просто порт из контейнера на хост пробросить?🙄
Aler
мне надо наоборот
Aler
чтобы контейнер обращался, а не хост
Sergey
чтобы контейнер обращался, а не хост
а в чем разница, связь в обе стороны, не?
Aler
в том, что сервер это хост, а контейнер клиент
Aler
в том смысле, что статичный порт нужен на хосте
Aler
в контейнере клиент создает соединение по необходимости и на порту который доступен
Aler
я просто очень не хочу запускать все на хосте. Особенно когда есть контейнеры готовые
Aler
https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/5 вроде все верно
Aler
значит, проблема где-то еще
Anonymous
Доброе время суток. Я ща ра8ъебу монитор. Просто сделайте мне копировать вставить чтобы этот ебу8ий контейнер запускался после перезагрузки сервера
Anonymous
а потом docker run --restart=always -d your_image
Anonymous
да ?
V 🏴‍☠️
В юните докера допиши всё, что хочешь в ExecStartPost=
Anonymous
ушел гуглить
Anonymous
оно же https://docs.docker.com/v1.7/articles/host_integration/ ?
V 🏴‍☠️
Типа того
Serg
В юните докера допиши всё, что хочешь в ExecStartPost=
В чем прикол в юните контейнеры прописывать?
V 🏴‍☠️
А чём прикол не прописывать?
V 🏴‍☠️
Вообще в самом оригинальном юните так, конечно, делать не стоит
V 🏴‍☠️
Лучше свой написать
V 🏴‍☠️
Вообще лучше без юнитов, а с оркестратором
Serg
Ну как бы restart policy есть
V 🏴‍☠️
Да пожалуйста
Anonymous
😁
V 🏴‍☠️
Это не отменяет того, что лучше использовать какой то оркестратор, если у тебя не один контейнер, конечно
V 🏴‍☠️
Ну и девупсы нам завещали не рестартить, а пересоздавать
B
Добрый день всем кто может скинуть Exampl докер файла для (nodejs,mongodb,redis) или пример люблй докер файла с использованием nodejs app
Serg
Альтернатива композа ?
V 🏴‍☠️
Ну они правы
А я не спорю, сам к этому стремлюсь
noizo
вопрос, есть docker-compose в git. Обычная схема - это: git pull ; docker-compose build ; docker-compose up -d. исли в репо произойдет изменение, и надо будет заново собрать и запустить контейнеры, они заменят собой уже запущенные? Или надо писать сначала что то типа docker rm $(docker ps -aq) ??
V 🏴‍☠️
Альтернатива композа ?
Если пожирнее - k8s
V 🏴‍☠️
Если не сильно жирно и чисто стартовать с нужными параметрами - nomad, например
V 🏴‍☠️
Я лично ковыряю nomad
Serg
Если пожирнее - k8s
Ясненько. make sense
noizo
Заменят, но мусор будет копится.
а есть способ избавляться как то сначала от мусора, а потом запускать?
Serg
а есть способ избавляться как то сначала от мусора, а потом запускать?
Можно и сначала все почистить, тогда downtime будет больше. Легче сперва выкатить, потом почистить хвосты.
noizo
а если не руками, то как их чистить?
noizo
из скрипта скажем
Serg
у меня в ci настроенна чистка после каждой выкатки. Можно все это в bash закатать.
Serg
docker rm $(docker ps -a -q) || true docker rmi $(docker images -q -f dangling=true) || true
Gleb
docker rm $(docker ps -a -q) || true docker rmi $(docker images -q -f dangling=true) || true
есть ещё docker prune, там вроде как уже готовое есть
Gleb
Народ, а какие есть тулзы для кастомизации процесса сборки docker image? Вот есть dapp от фланта, но нам он не очень подходит, это адовый комбайн, а нам нужно совсем немного. 1). Возможность подмонтировать volume для хранения кэша на этапе сборки и 2). Создание из одного dockerfile нескольких image через нечто типа multi-stage build. Я пока вижу ток один вариант - пойти самим написать на Go за вечер, но вдруг уже есть готовое?
Короче отвечу сам себе, вдруг кому потребуется. Во первых есть https://github.com/grammarly/rocker и хоть он вроде как и закрыт недавно, но пока можно поюзать, почему нет? У него под капотом много прикольных фич, например Rockerfile (местный Dockerfile) прогоняется через go template, есть mount на этапе билда, кэши в S3 и многое другое. Ну а как финальный итог работы над rocker в этом направлении есть набор issue по внедрению mount в Dockerfile или build -v: https://github.com/moby/moby/issues/32507 https://github.com/moby/moby/issues/14080. Ну и ещё есть Dockerize - bash script, который добавляет поддержку build-time mount'ов: https://gist.github.com/wjordan/f9f640727c06d46172e6
Stepan
Просто фишка в том что в другом контейнере точно такой же скрипт работает правильно
Stepan
Вот поэтому сюда написал
Gleb
Просто фишка в том что в другом контейнере точно такой же скрипт работает правильно
Вот прям тот же image, но просто ещё раз docker run - и всё поломалось? Глянь логи докера, либо попробуй в --network=host запустить и прокинуть напрямую. Бывали такие странные проблемы с docker-proxy.