dockercompose中服务之间的通信

2024-10-02 20:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在docker上用wickr的机器人云、一台阿尔卑斯python机器和redis制作一个机器人。这是我的三项服务。 我在docker的文档dns上看到使用服务名称解决IpAdress。 但当我从python_应用程序服务向ickr_io服务发送post请求时。 什么都没发生

docker-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'])
...

Tags: ioredisapiappurlportbotcallback