source

Python을 사용하여 Docker에서 MariaDB를 연결할 수 없습니다.

manysource 2023. 8. 28. 21:13

Python을 사용하여 Docker에서 MariaDB를 연결할 수 없습니다.

저는 도커 컴포지트 서비스로 운영되는 mariadb를 연결하려고 합니다.저는 "app"이라는 이름의 다른 서비스를 가지고 있으며 단지 db를 연결하기 위해 그 안에 새로운 파이썬 파일을 포함하고 있습니다.

phpmyadmin성공적으로 연결되지만 python과 연결하려고 하면 어떤 이유로 실패합니다.

오류 메시지:

mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'mariadb:3306' (-3 Try again)

도커-docker.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).

언급URL : https://stackoverflow.com/questions/67844352/cant-connect-mariadb-from-docker-using-python