TLDR
Кто-нибудь знает, как мне настроить squid, или docker, или ..., чтобы мои docker контейнеры могли получить доступ к inte rnet через мой прокси-сервер (squid) И контейнеры в одной сети могут обращаться друг к другу по своим именам хостов?
Длинный вопрос
Следующий сценарий:
- Существует корпоративный прокси
- На моем linux хосте я установил squid, который настроен для запроса родительского (корпоративного) прокси (как описано здесь https://wiki.squid-cache.org/Features/CacheHierarchy#How_do_I_configure_Squid_forward_all_requests_to_another_proxy .3F )
- Я хочу использовать docker - составить для запуска 2 служб, которые должны иметь доступ к inte rnet через прокси (squid) и получать доступ к конечным точкам http друг друга через имя хоста
My docker-compose.yml
:
version: '3'
services:
my-backend-service:
image: "backend-service:latest"
networks:
- back-tier
my-frontend-service:
image: "frontend-service:latest"
environment:
- backend.hostname: my-backend-service
networks:
- back-tier
networks:
back-tier:
Когда сервисам не требуется доступ к inte rnet, например API, эта настройка будет в порядке, так как сервис внешнего интерфейса может получить доступ к бэкэнд-сервис по имени хоста.
Но бэкэнд-сервису необходим доступ к API publi c в inte * 1 055 * и для этого он должен использовать прокси.
Чтобы это исправить, я создал следующий файл на своем хосте linux ~/.docker/config.json
:
{
"proxies":
{
"default":
{
"httpProxy": "http://MY_HOSTNAME:3128",
"httpsProxy": "http://MY_HOSTNAME:3128"
}
}
}
Примечание : Я должен использовать имя хоста моего хост-компьютера (MY_HOSTNAME), так как localhost или 127.0.0.1 не работают. Контейнер docker не найдет ничего, работающего на локальном хосте через порт 3128.
Хорошо, теперь мой бэкэнд-сервис может обращаться к API в inte rnet. Но мой frontend-сервис больше не может получить доступ к бэкэнд-сервису по имени хоста my-backend-service!
Когда я запускаю curl http://my-backend-service:8080
на my-frontend-service, я получу ответ от squid: что-то о том, что он не может определить IP-адрес по имени хоста ...
Вопрос Кто-нибудь знает, как мне настроить squid, или docker, или ... , чтобы мои docker контейнеры могли обращаться к inte rnet через мой прокси-сервер (squid) И контейнеры в той же сети могли обращаться друг к другу по своим именам хостов?