pymysql.err.OperationalError:(2003、「localhost」でMySQLサーバーに接続できません([Errno 99]要求されたアドレスを割り当てることはできません))

pymysql.err.OperationalError:(2003、「localhost」でMySQLサーバーに接続できません([Errno 99]要求されたアドレスを割り当てることはできません))

MariaDBに接続する必要があるStreamlitアプリケーションがあります。実行すると、docker-compose up次のエラーが発生します。

pymysql.err.OperationalError:(2003、「localhost」でMySQLサーバーに接続できません([Errno 99]要求されたアドレスを割り当てることはできません))

私のアプリケーションをホストする静的IPと、この方法でアクセスできるMariaDBのIPアドレスがあります。

これは私のdocker-compose.yamlファイルです。

services:
    app:
        restart: always
        build: ./app
        ports:
            - "8501:8501"
        command: streamlit run Main.py

    mariadb:
        image: mariadb:10.5.17
        ports:
            - "3306:3306"
        volumes:
        - db_data:/var/lib/mysql
        - db_conf:/etc/mysql/conf.d
        environment:
            MARIADB_ROOT_PASSWORD: Ap$im
            MARIADB_HOST: xxx.xx.xxx.xx (IP address of MARIADB) 
            MARIADB_DATABASE: a
            MARIADB_USER: b
            MARIADB_PASSWORD: c
        networks:
            - streamlit_network

    nginx:
        restart: always
        build: ./nginx
        ports:
            - "80:80"
        depends_on:
            - app
            - mariadb

volumes:
    db_data:
    db_conf:

networks:
   streamlit_network:
     external: true

そしてそれにアクセスするためのPythonファイルは次のとおりです。

conn = pymysql.connect(
            host=os.environ.get("host"),
            user=os.environ.get("user"),
            password=os.environ.get("password"),
            database=os.environ.get("database"),
            cursorclass=pymysql.cursors.DictCursor

.env ファイル:

# Environment variables defined inside a .env file 
host="mariadb"
user="b"
password="c"
database="a"
port="3306"

どんな助けでも大変感謝します。よろしくお願いします。

ベストアンサー1

おすすめ記事