172 похожих чатов

Всем привет. Поднял себе реестр docker. Для его работы у

меня запускается 2 контейнера - nginx и registry. И теперь попал в странную ситуацию - для работы nginx нужен сервис gateway, а чтобы запустить сервис gateway нужно скачать его из registry 🤷 Подскажите, как можно решить это? Запустить еще один nginx?

32 ответов

25 просмотров

Зачем нужен gateway не совсем понятно. У Вас уже есть nginx и registry для полноценной работы докер-режистри. Это, конечно при условии, что nginx в работает как прокси и у него соответствующий конфиг есть для работы с registry.

McLotos- Автор вопроса
Вячеслав Малютин
Зачем нужен gateway не совсем понятно. У Вас уже е...

gateway будет ловить gql-запросы и перенаправлять их в rabbit, а когда все сервисы ответят, собирать их ответы в один и отправлять клиенту

McLotos- Автор вопроса
McLotos
gateway будет ловить gql-запросы и перенаправлять ...

по сути nginx нужен только для registry, но он занимает 443 порт поэтому и gateway придётся за него убрать

McLotos
по сути nginx нужен только для registry, но он зан...

Вы там с архитектурой разберитесь и отделите мух (приложеньки) от котлет (базовая инфраструктура). Никто не мешает использовать один прокси (nginx) для разных задач. Конфиги нужны только соответствующие.

McLotos- Автор вопроса
Вячеслав Малютин
Вы там с архитектурой разберитесь и отделите мух (...

не понял. Вот есть у меня registry, который спрятан за nginx на домене registry.mysite.ru А домен mysite.ru должен обращаться к gateway. Всё. На это вся инфраструктура заканчивается. Куда там и что будет делать gateway - не мои проблемы, моя задача сделать так, чтобы gateway был доступен на 443 порту домена mysite.ru Можно тогда разнести домены mysite.ru и registry.mysite.ru по разным физическим серверам и в принципе это решит проблему, но держать отдельный физический сервер для одного единственного контейнера - так себе идея

McLotos- Автор вопроса
Andrey
Почему бы и нет?

если gateway спрятать за nginx, то nginx не сможет запуститься так как при чтении своего конфига получит ошибку "хост недоступен". А чтобы запустить gateway, нужно его скачать из registry, которые недоступен, пока nginx лежит. В общем скорее всего придётся все-таки поднимать gateway на отдельном сервере и тогда получится что на одном сервере будет registry + nginx, а на втором только gateway

Можно и зайца научить курить. Но зачем? Заверните трафик на один прокси (nginx) и настройте его, чтобы он проксировал запросы к нужным ресурсам.

Можно просто нормально настроить нджинкс

McLotos- Автор вопроса
Вячеслав Малютин
Можно и зайца научить курить. Но зачем? Заверните ...

он должен отправлять все запросы на gateway. ну или может есть какой-то способ заставить nginx общаться напрямую с rabbitmq, дожидаться ответа всех сервисов и собирать из них единый ответ? Если такой способ есть я с радостью выкину этот gateway. А еще gateway отвечает за push-уведомления и за SSE

McLotos- Автор вопроса
McLotos
что я и пытаюсь сделать =)

Так и не нагуглил, как запустить nginx при unreachable upstream?

McLotos
если gateway спрятать за nginx, то nginx не сможет...

А вот про это я как раз и писал, что нужно отделить мух от котлет. У Вас должны быть слои сервисов: инфраструктурный и прикладной (приложения). И они должны жить и запускаться параллельно.

McLotos- Автор вопроса
Andrey
Так и не нагуглил, как запустить nginx при unreach...

там из решений типа "подождать несколько секунд, пока нужный сервис не запуститься и попробовать снова. А нужный сервис не запустится пока registry недоступен

McLotos- Автор вопроса
Вячеслав Малютин
А вот про это я как раз и писал, что нужно отделит...

Это понятно, не понятно как поделить 443 порт между gateway и nginx если они на одном сервере =)

McLotos- Автор вопроса
Вячеслав Малютин
Не мешайте все в кучу. Разделите.

то есть выделить под реестр отдельный физический сервер?

McLotos- Автор вопроса
Вячеслав Малютин
Никак.

вот и я о том же =)

McLotos
то есть выделить под реестр отдельный физический с...

Нет. Регистри с прокси сначала запускать, а потом уже приложения.

McLotos
вот и я о том же =)

Но сделать можно, если понимать, что nginx должен проксировать запросы.

McLotos- Автор вопроса
Вячеслав Малютин
Нет. Регистри с прокси сначала запускать, а потом ...

у меня так и настроено ` docker compose --env-file .env --profile registry up --build -d docker compose --env-file .env --profile gateway up --build -d docker compose --env-file .env --profile services up --build ` Но nginx падает с ошибкой "gateway недоступен"

McLotos
у меня так и настроено ` docker compose --env-file...

Про то, как заставить nginx запуститься без доступного upstream Вам уже сказали.

McLotos- Автор вопроса
Вячеслав Малютин
Про то, как заставить nginx запуститься без доступ...

upstream backend { server backend1.example.com weight=5; server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; server backup1.example.com backup; } По умолчанию запросы распределяются по серверам циклически (в режиме round-robin) с учётом весов серверов. В вышеприведённом примере каждые 7 запросов будут распределены так: 5 запросов на backend1.example.com и по одному запросу на второй и третий серверы. Если при попытке работы с сервером происходит ошибка, то запрос передаётся следующему серверу, и так далее до тех пор, пока не будут опробованы все работающие серверы. Если не удастся получить успешный ответ ни от одного из серверов, то клиенту будет возвращён результат работы с последним сервером. То есть nginx всё так же продолжит падать

McLotos- Автор вопроса
McLotos
upstream backend { server backend1.example.com...

в моём случае этот конфиг выглядел вот так upstream backend { server gateway:8080 max_fails=10 fail_timeout=30s; } а дальше уже server { listen 443 ssl default_server; http2 on; location / { proxy_pass http://gateway; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }

McLotos- Автор вопроса
McLotos
да пробовал еще вчера =(

И какую ошибку Nginx выдает?

McLotos- Автор вопроса
Вячеслав Малютин
И какую ошибку Nginx выдает?

docker compose up падает с ошибкой "https://register.mysite.ru/v2/": dial tcp *.*.*.*:443: connect: connection refused а nginx ругается в логах host not found in upstream "gateway:8080"

McLotos- Автор вопроса
Вячеслав Малютин
И какую ошибку Nginx выдает?

вот конф для mysite у registry.mysite другой конфиг в отдельном файле

McLotos
docker compose up падает с ошибкой "https://regist...

"https://register.mysite.ru/v2/": dial tcp *.*.*.*:443: connect: connection refused А 443 порт на хосте никем не используется?

McLotos- Автор вопроса

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
62
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
3
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта