bootcamp icon indicating copy to clipboard operation
bootcamp copied to clipboard

[BUG]: pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '172.16.238.11' ([Errno 111] Connection refused)")

Open zhenzi0322 opened this issue 3 years ago • 1 comments
trafficstars

Is there an existing issue for this?

  • [X] I have searched the existing issues

Is your feature request related to a problem? Please describe.

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.0
    networks:
      app_net:
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2020-12-03T00-03-10Z
    networks:
      app_net:
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.0.2
    networks:
      app_net:
        ipv4_address: 172.16.238.10
    command: ["milvus", "run", "standalone"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    ports:
      - "19530:19530"
    depends_on:
      - "etcd"
      - "minio"

  mysql:
    container_name: img-search-mysql
    image: mysql:5.7
    networks:
      app_net:
        ipv4_address: 172.16.238.11
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - "3306:3306"

  webserver:
    container_name: img-search-webserver
    image: milvusbootcamp/img-search-server:towhee0.6
    networks:
      app_net:
        ipv4_address: 172.16.238.12
    environment:
      MILVUS_HOST: '172.16.238.10'
      MYSQL_HOST: '172.16.238.11'
    volumes:
      - /mnt/disk2/user_qiu/data:/data
    restart: always
    depends_on:
      - standalone
      - mysql
    ports:
      - "5001:5000"

  webclient:
    container_name: img-search-webclient
    image: milvusbootcamp/img-search-client:1.0
    networks:
      app_net:
        ipv4_address: 172.16.238.13
    environment:
      API_URL: 'http://127.0.0.1:5000'
    ports:
      - "8001:80"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://127.0.0.1:8001"]
      interval: 30s
      timeout: 20s
      retries: 3

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24

Describe the solution you'd like

Here are the issues that arise

image

docker logs img-search-webserver
...
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '172.16.238.11' ([Errno 111] Connection refused)")
2022-09-12 04:01:37,959 - 22691085055808 - milvus_helpers.py-milvus_helpers:19 - DEBUG: Successfully connect to Milvus with IP:172.16.238.10 and PORT:19530

Describe alternatives you've considered

No response

Anything else?

No response

zhenzi0322 avatar Sep 12 '22 04:09 zhenzi0322

Can you try to connect to the started MySQL? And refer to this parameter:

import pymysql

conn = pymysql.connect(host='localhost', user='root', port=3306, password=123456,
                                           database='mysql', local_infile=True)
conn.cursor()

If you can connect it, you can change the MySQL_HOST in docker-compose.yaml to your local IP address.

shiyu22 avatar Sep 13 '22 02:09 shiyu22

This error occurs when using docker-compose up.

That's because that the img-search-webserver tries to connect before mysql is ready to connect.

HoYoung1 avatar Dec 24 '22 08:12 HoYoung1