Связь между службами в docker-compose

#python #docker #networking #docker-compose

Вопрос:

Я пытаюсь создать бота на docker-сочиняю с помощью бота-облака от wickr, машины alpine python и redis. Это мои 3 услуги. Я вижу на Doc dns докера решаю IpAdress с именем службы. Но когда я делаю запрос на публикацию из службы python_app в службу ickr_io. Ничего не происходит…

докер-compose.yml

 version: "3.3" networks:  mynetwork:    services:   ickr_io:  image: wickr/bot-cloud:5.88.06.01  restart: always  volumes:  - /opt/WickrIO:/opt/WickrIO    stdin_open: true  tty: true   ports:  - "4001"  networks:  - mynetwork    python_app:  build:   context: ./python_  depends_on:   - ickr_io  - redis  networks:  - mynetwork    volumes:  - /opt/WickrIO:/opt/WickrIO    ports:  - "5000"    redis:   image: redis  ports:  - "6379"  networks:  - mynetwork  

Мой файл на python:

 bot_api_server_ip = "ickr_io" bot_api_server_port = "4001" bot_api_key = 'apikey' bot_secret_encoded = "secret_encoded" bot_callback_ip = "python_app" bot_callback_port = "5000"  user_redis = redis.StrictRedis(host='redis', port=6379,db =0,decode_responses=True) product_redis = redis.StrictRedis(host='redis', port=6379,db=1,decode_responses=True)  def botSetCallbackURL():  bot_web_interface_URL = f"http://{bot_api_server_ip}:{bot_api_server_port}/WickrIO/V1/Apps/{bot_api_key}"  bot_headers = {'Accept': '*/*', 'Content-Type': 'application/json', 'Authorization': f'Basic {bot_secret_encoded}'}  bot_callback_url = f"http://{bot_callback_ip}:{bot_callback_port}/callback"  bot_callback_payload = {'callbackurl': f'{bot_callback_url}'}  bot_msgrecv_callback_url = bot_web_interface_URL   "/MsgRecvCallback"  attempts = 1  while True:  try:  setMsgRecvCallback = requests.post(bot_msgrecv_callback_url, headers=bot_headers, params=bot_callback_payload)  print("Setting Callback URL")  getMsgRecvCallback = requests.get(bot_msgrecv_callback_url, headers=bot_headers)  callbackStatus = "Callback POST Response :", setMsgRecvCallback.text, " Callback GET Response :", getMsgRecvCallback.text  print(callbackStatus)  break  except Exception as e:  time.sleep(1)  attempts  = 1  print(e, "nError setting Callback URL!!! Try #", attempts)  if attempts == 3600:  break  else:  print("ERROR SETTING CALLBACK URL!!!!!!!!!!!!!!!!!!!!!!!NO MORE RETRIES!!!!!!!!!!!!!!!!!!!!!!!!")  botSetCallbackURL() app = Flask(__name__)  @app.route('/callback', methods=['POST']) ...  

Комментарии:

1. Что же все-таки происходит? Попадаете ли вы в этот цикл повторных попыток; какое исключение вы получаете? Настроен ли сервер ( http://ickr_io:4001 ) для прослушивания адреса 0.0.0.0 порта 4001 или чего-то еще (конфигурация приложения, ничего не зависящего от настройки)?