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"
どんな助けでも大変感謝します。よろしくお願いします。