#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 или чего-то еще (конфигурация приложения, ничего не зависящего от настройки)?