@Muramidaza

Настройка docker и proxy для возможноси отправки запроса через curl между контейнерами. Возможно ли это?

Есть сервер с выходом в интернет через прокси, для упрощения доступа настроен cntlm
Есть настройка для докера в /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://10.223.107.16:3128"
Environment="HTTPS_PROXY=http://10.223.107.16:3128/"


На сервере есть 2 проекта и каждый запускается с помощью docker-compose. Каждый проект самостоятелен - своя БД и свои сервисы. Из вне эти проекты полностью доступны по адресу 10.223.107.16 по всем портам указанным в docker-compose.yml (в том и другом проекте). Из контейнеров проектов доступны ресурсы интернета через этот прокси.

Из одного проекта должен производится запрос в другой через curl. Но нет доступа.

* Uses proxy env variable https_proxy == '10.223.107.16:3128'
* Trying 10.223.107.16:3128...
* Connected to 10.223.107.16 (10.223.107.16) port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to 10.223.107.16:8443
> CONNECT 10.223.107.16:8443 HTTP/1.1
Host: 10.223.107.16:8443
Proxy-Connection: Keep-Alive

* Operation timed out after 5001 milliseconds with 0 out of 0 bytes received
* Closing connection 0
Error Connect error: 28

Если я вручную пытаюсь из контейнера пытаюсь сделать запрос curl -X GET "https://10.223.107.16" то возвращается ошибка 503 from proxy after CONNECT. При попытке сделать тот же запрос из вне через постман например - то запрос нормально проходит - то есть сервис на этом порту доступен.

Как правильно настроить докер или прокси для возможности отправить запрос curl?
  • Вопрос задан
  • 299 просмотров
Решения вопроса 2
@dronmaxman
VoIP Administrator
Часто эту задачу решают через external network.

Создаеш еще одну сеть через CLI
docker create network net-private

Потом добавляеш ее в docker-compose.yml как внешнюю, потом в томже компопозе добавляеш ее к сервису которые должны между собой взаимодействовать.

После всех манипуляций контейнеры будут видеть друг-друга по именам.

Вот пример двух композов, приложение с базой и pgadmin. Pgadmin это вебка для управления базой, что бы они могли взаимодействовать мы объединяем их в одну сеть net-private.
version: '3.8'

services:
  pgadmin:
    image: dpage/pgadmin4
    restart: unless-stopped
    environment:
      PGADMIN_DEFAULT_EMAIL: "admin@example.com"  # замініть на свою email-адресу
      PGADMIN_DEFAULT_PASSWORD: "qwerty12345"  # замініть на свій пароль
    ports:
      - "5050:80"
    networks:
      - net-private

networks:
  net-private:
    external: true


version: '3.8'

services:
  web:
    image: my/app
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
        - ./data:/mnt/data
  database:
    image: db/psql
    restart: unless-stopped
    networks:
      - net-private


networks:
   net-private:
    external: true
Ответ написан
Комментировать
ValdikSS
@ValdikSS
no_proxy=10.0.0.0/8
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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