Alf 🙀
поэтому и спрашиваю, можно ли как-то задать ему CMD в docker-compose
цмд не гарантирует тебе что контейнер не закончит свое существование после исполнения процесса
Alf 🙀
цмд это твоя точка входа в контейнер
Sander
в логах пусто
Sander
я хочу в контейнер зайти и от туда попробовать
Alf 🙀
в логах пусто
либо ты не то логируешь либо контейнер ничего не делает
Sander
потому что не понимаю, почему- не работает
Alf 🙀
Sander
как я могу зайти
Sander
если он отрубается сразу же
Sander
мне не зайти если он отрубается тут же
Alf 🙀
мне не зайти если он отрубается тут же
у тебя есть имадж контейнера?
Sander
нет, это mariadb:latest
A
и еще один вопрос
A
нужно запустить н-ное количество redis контейнеров со следующим маппингом портов: 6379:6379, 6380:6379, 6381:6379 и т.д.
Alf 🙀
сделай доккер ран -ти мариядб:латест /бин/баш
Sander
не подойдет мне docker run
Sander
я должен сделать через docker-compose
Sander
и видеть что именно в нем происходит
A
можно ли сделать что-то типа range docker compose
Sander
через docker run я с едалю но смысл
Sander
потому что, api разные
A
поискал но не нашел ничего
Sander
на docker run я могу сделать, спокойно но мне надо на docker-compose
Sander
поэтому я хотел посмотреть, что происходит с контейнером именно в момент когда я запускаю через docker-compose
Sander
а не через docker run
Sander
но так как контейнер отрубается, я этого сделать не могу
Alf 🙀
поискал но не нашел ничего
https://docs.docker.com/engine/reference/run/#/expose-incoming-ports
Sander
зачем?
Alf 🙀
но так как контейнер отрубается, я этого сделать не могу
чувак а какая по твоему разница как ты контейнер запускаешь?
Sander
я же только что сказал что я могу через docker run сделать, но мне надо через docker-compose
Sander
большая, я же тебе говорю
Sander
что я с docker run могу сделать
Sander
но мне надо на docker-compoes
Sander
потому что через compose не работает
Sander
поэтому я хочу зайти в контейнер именно когда я запускаю compose
Alf 🙀
значит проблема в прокладке...
Sander
...
A
хмм, оказывается был баг: https://github.com/docker/compose/issues/2611
Alf 🙀
понимаешь, тут такое дело, нет разницы как ты запускаешь контейнер с помощью рана или с помощью композа. одно является человеколюбивой оберткой над другим. если оно у тебя работает в состоянии когда ты делаешь ран значит должно работать и в состоянии когда ты делаешь композ. если это не так проблема не в том что это композ или ран
Alf 🙀
ты про какое апи прости?
Evgeny
потому что через compose не работает
Кажется тебе пора почитать что именно делает композ более внимательно и в оригинале, а не в статьях на Хабре
Sander
как-нибудь теперь сам справлюсь
Глеб
как не дать контейнеру останвоиться, чтоб я потом смог в него зайти и посмотреть что там в нем. docker run --rm -it -d \ --name backup_container \ --net dev_network \ -v $(pwd)/test/:/tmp/:rw \ -v $(pwd)/containers/mariadb/mysql/:/var/lib/mysql/:rw \ mariadb:10 \ bash -c "mysqldump --single-transaction --quick --user=homestead --password=secret homestead > /tmp/DB.sql" /dev/bash
Я делаю процесс init главным, systemd который уже запускает то что мне нужно при старте контейнера, соответственно если ложится сервис то без проблем можно посмотреть логи или среагировать нужным образом, контейнер при этом всегда будет рабочим вне зависимости от запускаемого сервиса.
Sander
что за init процесс
An7on
имхо проще проследить, что контейнер упал
Глеб
/usr/sbin/init =)))
Sander
спасибо
Глеб
имхо проще проследить, что контейнер упал
а если мне не нужно чтоб контейнер падал? мне нужно оповести себя по удобному мне каналу об ошибке и перезапустить сервис
Evgeny
Это какое-то странное решение, имхо
Evgeny
Почему не докерлоги?
Sander
ну я смотрю докер логи
Sander
чтот мало понятного там
Sander
проблема в общем уже понятна
Sander
через command это не сделать
Sander
единственный вариант опрокинуть туда баш файл
Глеб
Тем более что докер не полный лог мне выведет, а если мой сервис тоже пишет логи, мне нужно посмотреть к чему это привело посмотрев работу своего сервиса
An7on
дак если один сервис в одном контейнере
An7on
то логи и будут логами сервиса
Sander
просто так сделаю, раз другие способы доставляют столько проблем: docker run --rm -i \ --name backup_container \ --net site_dev_network \ -v $(pwd)/containers/mariadb/export/:/tmp/:rw \ mariadb:latest \ bash -c " mysqldump --user=homestead --password=secret -h mariadb_container homestead > /tmp/database.sql && tar czfP /tmp/site.ee.tar.gz -C /tmp/ database.sql"
Глеб
Да мне не нужно чтоб контейнер падал, и мне удобнее работать с логами через journalctl
Глеб
Мне логи докера не нужны
Alf 🙀
Мне логи докера не нужны
docker logs возвращает то что вы отправляете в стдаут вы всегда можете воспользоваться journald драйвером
Alf 🙀
Да мне не нужно чтоб контейнер падал, и мне удобнее работать с логами через journalctl
а почему вам не нужно чтобы контейнер падал? расскажите про свой юзкейс?
Глеб
Глеб
а почему вам не нужно чтобы контейнер падал? расскажите про свой юзкейс?
потому что у меня в контейнере не один сервис работает
Alf 🙀
я понимаю, но не все логи пишутся в stdout, некоторые пишутся в файл
я могу вас сейчас удивить но в *nix все - файл.
Глеб
отчего такая необходимость?
есть задача при которой в одном контейнере должна сохраняться работоспобность сервиса, поэтому при падении одного всегда будет работать другой, пока первый не поднимется
Evgeny
А почему не два контейнера?
Глеб
Ну горизонтально и так расширяется и используется более одного контейнера =)