Alexander
root@58e5d47d032b:/var/www# ls -l total 644 drwxr-xr-x 7 root root 224 Sep 4 13:12 app -rwxr-xr-x 1 root root 1686 Sep 4 13:12 artisan drwxr-xr-x 4 root root 128 Sep 4 13:12 bootstrap -rw-r--r-- 1 root root 1527 Sep 4 13:12 composer.json -rw-r--r-- 1 root root 146775 Oct 1 19:37 composer.lock drwxr-xr-x 15 root root 480 Sep 4 13:12 config drwxr-xr-x 6 root root 192 Sep 4 13:12 database drwxr-xr-x 801 root root 25632 Oct 1 19:39 node_modules -rw-r--r-- 1 root root 482111 Oct 1 19:39 package-lock.json -rw-r--r-- 1 root root 1022 Sep 4 13:12 package.json -rw-r--r-- 1 root root 1134 Sep 4 13:12 phpunit.xml drwxr-xr-x 8 root root 256 Oct 1 19:59 public -rw-r--r-- 1 root root 3924 Sep 4 13:12 readme.md drwxr-xr-x 6 root root 192 Sep 4 13:12 resources drwxr-xr-x 6 root root 192 Sep 4 13:12 routes -rw-r--r-- 1 root root 563 Sep 4 13:12 server.php drwxr-xr-x 5 root root 160 Sep 4 13:12 storage drwxr-xr-x 6 root root 192 Sep 4 13:12 tests drwxr-xr-x 39 root root 1248 Oct 1 19:37 vendor -rw-r--r-- 1 root root 537 Sep 4 13:12 webpack.mix.js
Alexander
такс
Alexander
сорян
Alexander
вопрос снимается. надо было просто через ls -al смотреть
Konstantin
Ну да 😀
Alexander
век живи, век учись, дураком помрешь 🙁
Timur
всем доброе утро. Господа, тупой вопрос: как открыть новый порт на уже существующем контейнере? Или это противоречит философии докера, когда ты хранишь persistent state отдельно, а контейнеры с конфигурацией у тебя уничтожаются-создаются пачками автоматом?
Timur
стоп-старт не вопрос (хотя ещё лучше было бы, конечно, на лету это делать)
Andrey
стоп-старт не вопрос (хотя ещё лучше было бы, конечно, на лету это делать)
если с самого контейнера порт уже открыт приложением, то прокинуть его на свою тачку не особо большая проблема (iptables правила прописать). Но проще и правильнее просто перезапустить)
Timur
пусть даже у остановленного контейнера
Timur
нашёл вот, что можно залезть в config.v2.json
Timur
это да, но у меня не мишн-критикал, просто стенд
Timur
т.е. я вполне могу его потушить
Timur
и править конфигурацию
Timur
забавнее всего то, что править именно эту конфигурацию из CLI нельзя :)
Timur
"ExposedPorts":{"4560/tcp":{},"5222/tcp":{},"5269/tcp":{},"5280/tcp":{},"5443/tcp":{}}
Timur
config.v2.json, угу
Timur
ejabberd, да :)
Andrey
тогда можно просто бахнуть правило типо: iptables -t nat -A DOCKER -p tcp --dport 9300 -j DNAT --to-destination 172.17.0.3:9300
Timur
"PortBindings":{"5222/tcp":[{"HostIp":"","HostPort":"5222"}],"5269/tcp":[{"HostIp":"","HostPort":"5269"}],"5280/tcp":[{"HostIp":"","HostPort":"5280"}]}
Timur
и вот ещё, только это hostconfig.json
Andrey
это костыль, про костыли вопросов не было :)
ты правила iptables смотрел на хосте?))
Andrey
ниче что докер создает такие же?)
Timur
ниче что докер создает такие же?)
есть разница между тем, что создаёт ПО при старте и между тем, что делаешь ты
Konstantin
Зачем это всё? Пересоздавай с нужными настройками
Timur
Зачем это всё? Пересоздавай с нужными настройками
ну вот я в первом сообщении спросил, собственно
Timur
какая? если 1 в 1 строки одинаковые
элементарно: рестарт хост-машины, миграция контейнера на другую ноду (с изменением внутреннего ip-адреса), и т.д. и т.п.
Timur
ты предлагаешь это iptables -I ... в /etc/rc.local пихать?
Timur
спасибо, не надо :)
Timur
уж проще json поправить
Andrey
А json править не костыль??? 😄
Timur
костыль, но более высокого уровня костыль
Timur
потому что докер хотя бы будет знать о том, что конфигурация контейнера изменилась
Timur
а тут ты по факту её не меняешь
Andrey
есть нормальная практика, пересоздать контейнер правильно, хочется приключений, тогда не чурайся костылей,они все одинаковые 😄
Timur
я в первом же сообщении спросил про best practices, господа :)
Andrey
потому что докер хотя бы будет знать о том, что конфигурация контейнера изменилась
а ты уверен что поменяешь везде и оно взлетит после рестарта? А при миграции/смене ip и прочей дребедени которую ты описал?
Andrey
я в первом же сообщении спросил про best practices, господа :)
А вообще есть гугл который дает исчерпывающий ответ на первой же странице: https://stackoverflow.com/questions/19897743/exposing-a-port-on-a-live-docker-container
Timur
у меня какая-то фигня нагуглилась, видимо запрос был не совсем корректный
Timur
я бы не стал задавать вопрос, ответ на который нашёл бы в гугле :)
Andrey
"open port on running docker container". - как его еще можно задать?))
Andrey
Просто вообще ситуевина выглядит как "захотелось секса поутру" 😄
Timur
Просто вообще ситуевина выглядит как "захотелось секса поутру" 😄
значит я ещё не такой старый, спасибо за комплимент :)
Timur
"open port on running docker container". - как его еще можно задать?))
я гуглил по "change port mappings on running container", угу
Timur
а ты уверен что поменяешь везде и оно взлетит после рестарта? А при миграции/смене ip и прочей дребедени которую ты описал?
надо погрепать и поискать. Мне этим докер и не понравился в своё время - документация вместо описания кишок рассказывает hello-world'ы разной степени замороченности. Откладывал знакомство с ним до последнего, а сейчас это отраслевой стандарт и хочешь или нет - приходится знать и работать
Konstantin
Нет бестпрактис, есть один единственный вариант - пересоздать
Timur
как-то так
Andrey
тут тебе без хелловорлдов)
Timur
пасяба
Timur
:)
Timur
https://www.youtube.com/watch?v=hdVNKmru3LM
ещё раз спасибо, отличная лекция :)
Andrey
ещё раз спасибо, отличная лекция :)
Посмотри у них на канале, видюх не много, но часто прям по делу
Timur
угу, обязательно
Konstantin
Konstantin
как вам песочница? )
Timur
rm -rf /var/cache/apt/archives вроде ещё, разве нет?
Timur
(если есть цель почистить apt)
Konstantin
окай, следующий
Konstantin
там все 4 строки - мусор
Andrey
начнем с того что должно быть FROM %some_image%:alpine 😄
Konstantin
не, это не весь файл, это лучшая его часть
Konstantin
https://laradock.io/ из varnish Dockerfile
Konstantin
+/- 500mb к размеру образа не сделают погоды) когда у тебя образ уже 2+гб
Anonymous
начнем с того что должно быть FROM %some_image%:alpine 😄
Нафиг этот альпайн, когда есть убунта в 32 метра?
Konstantin
да какая разница что там в baseimage? речь не про это
Timur
там все 4 строки - мусор
а посоветуйте литературу именно по философии и best practices для контейнеров (если что-то есть такое), пожалуйста
Andrey
да какая разница что там в baseimage? речь не про это
Лан лан, про upgrade вроде понятна суть. Что еще?
Konstantin
Лан лан, про upgrade вроде понятна суть. Что еще?
1. всё отдельным слоем для 1,3,4 строки = х3 к размеру и удаление бесмыссленно там 2. mkdir Зачем 2 раза? есть же mkdir -p 3. upgrade вообще незя использовать
Konstantin
не, ну такие Dockerfile сплошь и рядом, но не в подобном проекте же, наверное(
Anonymous
а еп, слона с RUN и не приметил =\
Поставь hadolint (линтер для докерфайлов), годные best practice даёт
Timur
а еп, слона с RUN и не приметил =\
аналогично, кстати :)