Предпочитаю docker-подход к деплойменту приложений. Однажды натолкнулся на интересный баг-особенность на centos.
Описание ситуации:
У вас есть несколько контейнеров:
- backend с REST API
- frontend приложение, которое использует это API,
Оба приложения, естественно имеют свой контейнер. Frontend ходит к API через внешний адрес (естественно через прокси, но это не имеет значения здесь). С дефолтными настройками вы можете столкнуться с проблемой, что ваш контейнер не может получить доступ к API, хотя:
1. Они на одной машине
2. API доступно для всех публично, и с любой другой машины API работает.
Причина в особой конфигурации firewall на centos, что легко исправляется добавлением сети докера в исключения, но не забывайте, что если сеть докера не задана, то при каждом запуске контейнеров docker-сеть может отличаться, поэтому советую задать её явно.
Подробнее здесь https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063
Простой фикс для копипаста (не копируйте, если не понимаете, что происходит):
Описание ситуации:
У вас есть несколько контейнеров:
- backend с REST API
- frontend приложение, которое использует это API,
Оба приложения, естественно имеют свой контейнер. Frontend ходит к API через внешний адрес (естественно через прокси, но это не имеет значения здесь). С дефолтными настройками вы можете столкнуться с проблемой, что ваш контейнер не может получить доступ к API, хотя:
1. Они на одной машине
2. API доступно для всех публично, и с любой другой машины API работает.
Причина в особой конфигурации firewall на centos, что легко исправляется добавлением сети докера в исключения, но не забывайте, что если сеть докера не задана, то при каждом запуске контейнеров docker-сеть может отличаться, поэтому советую задать её явно.
Подробнее здесь https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063
Простой фикс для копипаста (не копируйте, если не понимаете, что происходит):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.19.0.0/16 accept' && firewall-cmd --reloadи конфигурация сети в docker-compose
networks:#docker #web #rest #linux #issues
my-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
Docker Community Forums
NO ROUTE TO HOST network request from container to host-ip:port published from other container
it’s really weir things to me. I have a container A run with “-p 8080:80”, and a container B ( on the same host ) directly visit host-ip:8080, then log says: NO ROUTE TO HOST. I test the following things: 1.from within container B, “telnet host-ip 8080”…
Как вы пишите документацию на ваши REST сервисы? Swagger используете или в postman/fiddler цепочки запросов сохраняете?
Недавно открыл для себя очень простой формат, позволяющий писать интерактивную документацию в файле с расширением .rest или .http. Простой плагин для visual studio code (или для других ide тоже есть) позволит выполнять запросы и просматривать ответы. Всё что надо есть: можно объявлять переменные, описывать простые правила. Мне такой формат очень нравится, далеко не всегда хочется тащить swagger, но интерактивную документацию иметь полезно, а тут вы получаете её почти даром.
Если вдруг вы тоже не слышали, то загляните в описание
https://marketplace.visualstudio.com/items?itemName=humao.rest-client
#rest #api #docs
Недавно открыл для себя очень простой формат, позволяющий писать интерактивную документацию в файле с расширением .rest или .http. Простой плагин для visual studio code (или для других ide тоже есть) позволит выполнять запросы и просматривать ответы. Всё что надо есть: можно объявлять переменные, описывать простые правила. Мне такой формат очень нравится, далеко не всегда хочется тащить swagger, но интерактивную документацию иметь полезно, а тут вы получаете её почти даром.
Если вдруг вы тоже не слышали, то загляните в описание
https://marketplace.visualstudio.com/items?itemName=humao.rest-client
#rest #api #docs
Visualstudio
REST Client - Visual Studio Marketplace
Extension for Visual Studio Code - REST Client for Visual Studio Code