Alex
Ну он понимает, в общем
George
я два варианта тебе накинул
Alex
остановлюсь на том что он ищет сервис с названием db (поменял имя - сразу стал сваливаться)
Alex
Если вдруг случайно кто-нибудь писал на vue (vite) и смог завести на нём hot reload в docker - маякните)
Даниил
Всем привет, подскажите, пожалуйста, как в docker с mongo создать базового пользователя для подключения?
Timur
права и базу уже под свои нужды в скрипте правишь
Alex
Как можно объединить содержимое папок в docker compose volumes?
Павел
мне нужно выполнить команду с какой-то периодичностью, как это сделать в докере?
George
кронтаб
Alex
RUN --mount=type=cache в Dockerfile - не могу найти подробную доку, например, по типам mount. Это к чему относится вообще?
Alex
У BuildKit вообще как будто нет документации
George
это в buildx
George
там секреты могут быть еще
George
https://docs.docker.com/engine/reference/commandline/buildx_build/#secret
George
и дальше поиском по странице
Konstantin
кто сталкивался с антивирусами для среды кубернетес
Konstantin
=)
George
нет, они не нужны
George
тебе нужны средства защиты типа sysdig/stackrox/aqua
Konstantin
ну, это понятно, просто есть некие требования
Konstantin
абсурдные, которые нужно соблюсти
Konstantin
тот же каспер что-то предлагает, но опять же
Konstantin
обычный эндпоинт, просто с кнопочкой "проверка контейнера"
George
в sys dig это есть
George
кнопочка проверить контейнер
George
и в остальных тоже
George
это тебе скорее в https://t.me/sec_devops_chat
Konstantin
aswiro
Hi
Alex
Кто-нибудь может объяснить как в docker buildkit работает mount?
George
работает
George
я очень не люблю метавопросы. У тебя конкретная проблема ?
Alex
Да. Задача: есть сервис vue, строится от ноды.
Хочу, чтобы при сборке он запустил npm install.
Потом туда маунчу исходники со своего хоста.
Это работает, если я npm install запущу на хосте. node_modules появится в папочке и т.к. она замаунчена, всё ок. Но я хочу, чтобы всё было внутри докера изолировано. Тут начинается интересное.
Если я в dockerfile пишу RUN npm install, то всё норм, папочка появляется (в пустой директории). Но потом, при запуске контейнера маунтятся исходники с хоста ну и естественно перезаписывает всё.
Нашёл, что docker buildkit позволяет на этапе сборки образа маунтить через RUN --mount=type=bind,target=/home/node/app,rw
Но потом я запускаю контейнер, захожу в bash и вижу, что папка пуста
Alex
На этапе сборки ошибок никаких не выдаёт
Alex
DOCKER_BUILDKIT=1 docker build --no-cache -f /sandbox/conf/frontend/Dockerfile /sandbox/code/frontend
Alex
docker run -it 4b19cb02102a bash
Alex
FROM node:18
RUN --mount=type=bind,target=/home/node/app,rw
WORKDIR /home/node/app
George
ты какую проблему решаешь
Alex
В доках написано что source по дефолту берётся из from, а он - из билд контекста
George
ну так собирай и запускай в контейнере
Alex
У меня есть код локально на машине, vue
Alex
Я этот код маунчу в докер
George
в твоем случае я бы вообще не билдом пользовался, а запускал docker run -v <здесь_путь_к_исходникам> <имя образа с докером>
Alex
В этом коде должна быть папочка node_modules
George
чтобы на хосте образовались node_modules
George
ты же хочешь невозможного - чтобы в целевом контейнере была подмаунчена папка с хоста, но node_modules были из образа
George
это так не работает
Alex
Я не могу понять как сделать так чтоб node_modules появилась при этом на хосте чтоб не было ноды
George
как только ты маунтишь каталог с хоста - вся вложенная иерархия исчезает
Alex
ых
George
Alex
docker buildkit позволяет маунтить во время сборки образа
Alex
FROM node:18
RUN --mount=type=bind,target=/home/node/app,rw
RUN npm install
Alex
почему вот так не должно сработать?
Alex
вся проблема в том что папка не маунтится
Alex
Alex
Тьфу, блин
Alex
mount type bind существует только на уровне слоя
Alex
в документации об этом, разумеется, ни слова
Alex
В итоге всё решилось тем, что нужно было просто замаунтить node_modules как анонимный volume
volumes:
- ./code/frontend:/home/node/app
- /home/node/app/node_modules
Почему это работает?
George
Alex
Очень стрёмно, но это работает. Пока никак не могу сообразить почему host volume не перезаписывает container volume, а как будто бы мерджит получается
Alex
Ну и как даунсауд - на хосте содержимого node_modules нет, только изнутри контейнера
George
George
Alex
Мне всё это надоело и я запихал в entrypoint npm install && npm run dev просто
George
хорошее дело
Alex
Ну, оказалось наименьшим злом всё же
Alex
Как в docker compose сделать так, чтобы один контейнер запускался только после того как другой exit?
George
никак
George
не нужно так делать
George
но если очень хочется - wait-it.sh + можно задавать через depends_on healthy во второй версии компоуз файла порядок
George
а там уже и до exit'а не далеко
Alex
Идея такая: хочу composer сделать отдельным сервисом, прокинуть в него volume своего кода и в command composer install.
Проблема в том, что сервис backend запускается раньше чем композер отработает и соответственно ругается что vendor нет
Alex
depends_on не работает потому что мне наоборот надо дождаться когда контейнер exit
Alex
это же нормально?
George
можно depends_on healthy, а в компостере хелс давать только после того, как он все сделал
gaenkov
Зачем composer install в рантайме? Это же этап сборки