📓 Записки программера
1.02K subscribers
304 photos
1 video
6 files
599 links
Канал с регулярными постами о разных интересных материалах (статьи, видео, фреймворки и полезные инструменты).

https://dotnet.social/@denisio
加入频道
Две короткие статьи по работе с #docker

Initialize RabbitMq Docker Container with preconfigured Queues - может быть полезно при разработке/тестировании #rabbitmq

Nginx and Load Balancing - использование scale для поднятия нескольких инстансов контейнера - например, для тестирования балансировки нагрузки
Маленькие хитрости #docker - как подождать пока postgres (или любой другой сервис) придёт в норму после старта. У Postgres к примеру это занимает несколько секунд на холодный старт (=инициализация контейнера с созданием БД)
Если у вас отвалился Docker после очередного обновления Windows или самого Docker - не забываем качать обновление WSL и ставить. Время от времени после обновления винды (или Docker) у них бывает как-то рассогласовываются версии и Docker при старте валица с ошибкой на скриншоте.

Приходица руками качать msixbundle и апдейтить версию WSL, после чего всё начинает снова работать. #docker
👍7
Keycloak SSO with docker compose and nginx - ещё одна статья с интеграцией #keycloak #docker #howto
🔥7
Столкнулся тут с необходимости поснифать на DEV среде трафик между контейнерами докера... Некоторое количество командных строк на память.

Для начала с помощью docker network ls надо выяснить id нужного интерфейса (далее этот id написан как INTERFACE), 8000 - это exposed port моего контейнера.

Дампы пакетов в ASCII ( -A ):
tcpdump -i INTERFACE 'tcp dst port 8000' -A


Тоже самое + поиск по подстроке 'Sec-WebSocket-Key':
tcpdump -i INTERFACE 'tcp dst port 8000' -A | grep 'Sec-WebSocket-Key:'


Фильтрация только с флагом SYN (например для того чтобы посмотреть установку входящих соединений):
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] & (tcp-syn) != 0)' -A

Мониторинг keep-alive пакетов

tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] == tcp-ack and less 1)' -A


Отображение заголовков http-пакетов GET/POST/HEAD

tcpdump -i INTERFACE 'tcp dst port 8000' -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'


Ну а потом я вспомнил, что есть такой инструмент как nast, который позволяет дампить более простой строкой как заголовки так и тело входящего запроса:
nast -i INTERFACE -d -f 'tcp dst port 8000'


#tools #docker #tcpdump
👍8
Docker profiles - удобная фича, которая позволяет более гибко использовать один и тот же docker-compose файл, но с разными комплектами сервисов (например).

Если на пальцах - каждый сервис может содержать список профилей, в которые он включается. Потом делаешь

docker compose --profile with-db build


и оно билдит (или стартует если up) только те сервисы, в которых упомянут профиль with-db или не упомянуто профилей вообще. #docker #tools
👍7
Внезапно словил runtime-ошибку

Only the invariant culture is supported in globalization-invariant mode. See
https://aka.ms/GlobalizationInvariantMode for more information.

когда добавил ru-RU и пару других культур в форматирование даты. Забыл, что в Dockerfile надо добавлять пару строк для линуксов. В интернетах легко гуглица эта ошибка, но пусть будет и тут:
RUN apk --no-cache add icu-libs
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false

#docker #dotnet
👍7💩1
dockerc - compile docker images to standalone portable binaries. Што? :)) Жаль конечно, что как хостовая система пока не поддерживается Windows. #tools #docker
🔥3🤔3💩1🤓1
Кто-то недавно спрашивал про Docker - типа how to, так вот нашлось прекрасное - можно поиграца как в вебморде, так и выполнить команды соответственно локально. На мой взгляд это отличная тема для тех, кто только только начинает с докером. Ну и там не только про докер есть. #docker #howto
14🔥8👍6
Как захостить сайт в Windows контейнере в докере. Сложно сказать, зачем это может понадобиться в 2025-м, но пусть будет. #docker
😁6👍1🤔1