[英]Can't connect MariaDB from Docker using Python
我正在尝试连接作为 docker-compose 服务运行的 mariadb。 我有一个名为“app”的服务,并在其中包含一个新的 python 文件,只是为了连接数据库。
它成功连接到phpmyadmin但是当我尝试连接 python 时,由于某种原因它失败了:
错误信息:
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'mariadb:3306' (-3 Try again)
docker-compose.yml
version: "3"
services:
app:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./app:/app
command: >
sh -c "python3 services/db_connection.py"
depends_on:
- mariadb
prestashop:
image: prestashop/prestashop
networks:
myprestashop:
ports:
- 8181:80
links:
- mariadb:mariadb
depends_on:
- mariadb
volumes:
- /srv/Configs/PrestaShop/src:/var/www/html
- /srv/Configs/PrestaShop/src/modules:/var/www/html/modules
- /srv/Configs/PrestaShop/src/themes:/var/www/html/themes
- /srv/Configs/PrestaShop/src/override:/var/www/html/override
environment:
- PS_DEV_MODE=1
- DB_SERVER=mariadb
- DB_USER=root
- DB_PASSWD=mycustompassword
- DB_NAME=prestashop
- PS_INSTALL_AUTO=0
mariadb:
image: mariadb
networks:
myprestashop:
volumes:
- /srv/Databases/PrestaShop:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=mycustompassword
- MYSQL_DATABASE=prestashop
phpmyadmin:
image: phpmyadmin/phpmyadmin
networks:
myprestashop:
links:
- mariadb:mariadb
ports:
- 1235:80
depends_on:
- mariadb
environment:
- PMA_HOST=mariadb
- PMA_USER=root
- PMA_PASSWORD=mycustompassword
networks:
myprestashop:
db_connection.py
import mysql.connector as database
connection = database.connect(
user='root',
password='mycustompassword',
host='mariadb',
database='prestashop')
if connection:
print ("Connected Successfully")
else:
print ("Connection Not Established")
谢谢你的帮助
您忘记将myprestashop
网络添加到您的app
服务。 如果服务没有任何明确定义的网络,它会使用default
网络(它的名称类似于myproject_default
)。 所以错误的原因是app
服务在一个网络中,而其他一切都在另一个网络中( myprestashop
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.