Dan
Ты из контейнера с, прости господи, фронтом можешь напрямую обращаться к контейнеру с бэком.
Dan
Тебе даже не нужно бэк для этого открытым для всего мира держать
Dan
Достаточно только для внутренней сети
Артём
"на бэк" наверное имелось ввиду
Dan
Туда даже проксировать ничего не надо
Mark
По /... хостится статика фронта по /api... проксирует на контейнер бека
Dan
Не скажу что это правильно, но похрен, если работает
Mark
Да я хочу бест практис узнать и понять почему так неправильно если неправильно )
Dan
Я api выносил всегда отдельным контейнером с поддоменом api.blablabla
Dan
Если мне надо было публичным его делать
Mark
Наконец мы поняли что обсуждаем тепень надо понять почему это неправильно )
Артём
а, ну по факту да
Артём
Достаточно только для внутренней сети
Артём
Туда даже проксировать ничего не надо
Dan
А если не надо публичным — то я даже и поддомен не делаю
Dan
У меня просто крутится какой-нибудь процесс, который принимает запросы "снаружи" и отдаёт. Но работает только для 172 подсети
Dan
(например)
Dan
Реверс нужен тогда, когда у тебя публично торчат наружу уши разных доменов и поддоменов. Тебе надо проксировать много — ставишь прокси отдельно и радуешься.
Mark
Ты из контейнера с, прости господи, фронтом можешь напрямую обращаться к контейнеру с бэком.
Это понятно. Но секунду. Я отдал статику юзеру. Юзер при каком то действии скажем отсылает какой то запрос на апи. Тогда апи же должен быть публтичным
Roman
Что такое 2 фронта? что делает в этой связке nginx? что делает бэк?
Через docker compose поднимается 2 фронта 1 бэк nginx и база. Через nginx проксирую на фронты, а фронты в отдельных контейнерах. Например location / , то проксируется на первый фронт location /web на другой теперь фронт
Roman
Nginx проксирует на контейнера
Dan
Ну всё по красоте, в чём проблема?
Anonymous
Да я хочу бест практис узнать и понять почему так неправильно если неправильно )
Бест практик это когда nginx, бэк и фронт отдельно, nginx проксирует либо на статику либо на бэк, который уже отдаёт через кестрел какой нибудь
Roman
Ну всё по красоте, в чём проблема?
И в чем же? Проблема в том что когда обращаюсь на web то белый экран в браузере а не сама страничка
Anonymous
А что на фронте?
Anonymous
а есть готовые образы докер с sentry или graylog какой нибудь бесплатный сервис для логирования
Roman
Я думаю пришла пора тебе показать уже свои файлы конфигов :)
events { worker_connections 1024; } http { server { listen 80; resolver 127.0.0.11; location /web { set $upstream http://yugokraft_web:3000; proxy_pass $upstream; proxy_set_header X-Forwarded-For $remote_addr; location / { set $upstream http://yugokraft_admin:2000; proxy_pass $upstream; proxy_set_header X-Forwarded-For $remote_addr; } } }
Dan
А в блоке location /web так и должно быть, чтобы фигурная скобка открывалась, но потом никогда не закрывалась?
Dan
Ну и чтобы код читался лучше, я бы его оформил с отступами всё-таки. Это ни на что не влияет, но намного приятнее хуманскому глазу
Dan
events { worker_connections 1024; } http { server { listen 80; resolver 127.0.0.11; location /web { set $upstream http://yugokraft_web:3000; proxy_pass $upstream; proxy_set_header X-Forwarded-For $remote_addr; } location / { set $upstream http://yugokraft_admin:2000; proxy_pass $upstream; proxy_set_header X-Forwarded-For $remote_addr; } } }
Dan
Хотя бы так
Дмитрий
Всем привет. В докерстве новичок. Нужно сэмулирвать работу сети для тестирования. Чтобы получилась шара типа //server03/share_folder/ . Подскажите плиз куда копать
Дмитрий
Я тоже новичок но по-моему как то через volumes
это понятно. Мы пробросим папку внутрь докера. Но как потом 1. дать имя хосту (server03) И 2. расшарить папку внутри контейнера, чтоб хост мог обратиться к ней по сети как //server03/share_folder/
Roman
А вы фронт тоже проксируете через nginx ?
Решение проблемы было сделать 2 поддомена у которых 1 ип адрес
Pavel
Вечер добрый. Каждый раз при изменении кода надо перезапускать сборку контейнера командой docker build. После неё в списке образов остаются старые. Можно ли как-то пересобрать именно эти образы, или есть ли флаг, которые позволяет удалить старые с таким же именем?
Pavel
А если указать тег?
Всегда указываю, и они остаются.
Anonymous
Всегда указываю, и они остаются.
Сохраняются с двумя одинаковыми тегами?
Pavel
Не, у старых вместо имени появляется <none>
Sebor▂▅▇█▓▒░
Не, у старых вместо имени появляется <none>
Это не имя, а тег И это нормальное поведение
Pavel
<none> <none> d7122920fb83 15 minutes ago 371MB
Pavel
А как долго они висят?
Pavel
И перед запуском надо каждый раз останавливать предыдущий контейнер?
Anonymous
А то у меня в автодеплое Docker pull, может там память кончится так
Pavel
И что, они так и будут висеть?
Sebor▂▅▇█▓▒░
Можешь объяснить?
Почитай матчасть про слои в образах докера
Sebor▂▅▇█▓▒░
NM
А как долго они висят?
Долго, до перезагрузки. Чаще надо docker system prune делать :-)
Semyon
Ребят, можно ли зайти в docker image? не контейнер
Max xbim 🌴
можно выгрузить содержимое image просто на диск
Dauren
Приветствую всех! Кому-нибудь приходилось настраивать self-hosted Private Docker Registry with Token Authorization?
Егор
Привет. Корректно ли в докере, вместе с сервисом пихать asgi server? Например, nginx. Логика подсказывает, что некорректно, поскольку докер исповедует подход: один контейнер — один сервис (здесь же nginx+app). С другой стороны, оказывается, что возможности докера мы используем не до конца, поскольку там есть только лишь 1 процесс, а не k процессов, как могло бы быть. Продолжая рассуждение, возникает ещё один мысль. Как правило, app используются в рамках орекстраторов. Они распределяют ресурсы между app. Имеет ли смысл заморачиваться со следующим: один процесс внутри контейнера или их там несколько?
.
Ребят, need help : ) скачал докер, запустил в qnap containder station, а докер висит на 8080 порту. Как можно поменять порт в qnap может кто в курсах?))
.
кажется, разобрался, если кому понадобится обращайтесь))
Andrey
Привет. Корректно ли в докере, вместе с сервисом пихать asgi server? Например, nginx. Логика подсказывает, что некорректно, поскольку докер исповедует подход: один контейнер — один сервис (здесь же nginx+app). С другой стороны, оказывается, что возможности докера мы используем не до конца, поскольку там есть только лишь 1 процесс, а не k процессов, как могло бы быть. Продолжая рассуждение, возникает ещё один мысль. Как правило, app используются в рамках орекстраторов. Они распределяют ресурсы между app. Имеет ли смысл заморачиваться со следующим: один процесс внутри контейнера или их там несколько?
Вообще как-то "сюрр". Я не понимаю - откуда контейнер=1 процесс. Скорее 1 контейнер = 1 сервис. Если у тебя сервис = много процессов - что не так. Просто считается удобней, что 1 контейнер=1 сервис. И твое app в одном контейнере а nginx в линкованном в другом.
Andrey
Однако, если тебе удобней, ну сделай образ с nginx и твоим приложением и стартуй его. Или вообще nginx в образе смотрим в директорию, которая монтируется при ране контейнера и откуда прдтягивается твое приложение. Короче - хоть как. Лишь бы логично и удобно.
Егор
Почитай про C groups и все встанет на свои места почему лучше 1 докер =✓1 приложение
Но тут как бэ не совсем два приложения. Приложение-то одно. Есть утилита в виде asgi, которая позволяет скейлить это приложение. И эта утилита — nginx, видимо, а не всякие uvicorn
Егор
Тогда если один поток данных конечно же в докер один
Кажется, что uvicorn это прямо хуже nginx или traefik, так как они не умеют в несколько ядер.
Serhii
Пытаюсь настроить субдомены в traefik v2. Проблемы с портами возникли, если контейнеры с разными портами то traefik их также и мапит и получается хрень вроде whoami.localhost:5001. Может подскажет кто как настроить докер чтобы получилось whoami.localhost -> 5001
Mark
как можно сделать так чтобы при docker-compose up если image доступен (т.е ты авторизован) то используется image, если не авторизован то делается build?
Mark
services: backend: image: cashforcdryptoregistries.azurecr.io/calienteamcacocryptoexchangepage:backend-latest build: context: ./backend dockerfile: Dockerfile restart: always ports: - '5000:80'
Mark
то есть к примеру вот такой вот у меня docker-compose
Mark
я хочу чтобы image использовался в случае если я имею доступ к нему, но если нет то билд произойдет
A
Думаю нужно делать docker login, в зависимости от ответа выполнять или не выполнять build
Mark
а куда этот docker login поместить?
Mark
т.е это надо какой-то скрипт писать?
Mark
сделаю короче просто две версии докер компоуза, один для сервера второй для локального использования
Dan
🔥Узнайте и вы больше об инфраструктуре на продвинутом онлайн-курсе «DevOps практики и инструменты» от OTUS и инженеров Express42: https://otus.pw/Fh5W/ — Чему научат? Инструментам и конкретным приемам для реализации следующих практик: Infrastructure as Code(IaC), CI/CD, непрерывный сбор метрик (мониторинг и логирование) и др. 📌Хотите протестировать учебный процесс заранее? Сделайте это на бесплатном пробном уроке «От кода до Kubernetes за 1,5 часа»: https://otus.pw/LaUM/ — Совершите увлекательное путешествие от кусочка кода на Python до приложения на Kubernetes через Linux-систему, vagrant и Ansible, через Docker-контейнер и k1s. В итоге получите ваше приложение, запущенное в кластере Kubernetes и достаточно отказоустойчивое. Поделится своей экспертизой преподаватель-практик Лев Николаев (инженер и тренер в Express 42). Регистрируйтесь сейчас — напомним в день вебинара!
Alex
Подскажите плиз про конфиги https://docs.docker.com/compose/compose-file/#configs Как я понял из ссылок это надо для сварма?