如何在docker中连接MariaDB和Python
我有两个容器:python和mariadb。因为域名是docker中的容器名,所以我将主机用作,但它无法连接 下面是我的docker-compose.yaml如何在docker中连接MariaDB和Python,python,docker,docker-compose,mariadb,database-connection,Python,Docker,Docker Compose,Mariadb,Database Connection,我有两个容器:python和mariadb。因为域名是docker中的容器名,所以我将主机用作,但它无法连接 下面是我的docker-compose.yaml version: "3" services: db: container_name: mydb image: mariadb restart: always ports: - "3307:3306" environment: MY
version: "3"
services:
db:
container_name: mydb
image: mariadb
restart: always
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: maria
volumes:
- ./sql_scripts:/scripts
- hyacinth_db:/var/lib/mysql
web:
build: ./hyacinthBE
container_name: hyacinth
volumes:
- ./hyacinthBE/app:/code
ports:
- "8000:80"
depends_on:
- db
restart: on-failure
volumes:
hyacinth_db:
注:mariadb的集装箱名称为“mydb”,港口为3307
我的python连接代码如下:
from fastapi import FastAPI
import mariadb
import sys
app = FastAPI()
try:
conn = mariadb.connect(
user="root",
password="maria",
host="mydb",
port=3307,
database="Hyacinth"
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
cur = conn.cursor()
@app.get("/")
def read_root():
return {"Hello": "World"}
Docker合成后的Docker ps
docker-compose.yml
version: "3"
services:
database:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: maria
volumes:
- /my/full/path/sql_scripts:/scripts
- hyacinth_db:/var/lib/mysql
web:
build: /my/full/path/hyacinthBE
volumes:
- /my/full/path/hyacinthBE/app:/code
ports:
- "8000:80"
volumes:
hyacinth_db:
控制代码:
from fastapi import FastAPI
import mariadb
import sys
app = FastAPI()
try:
conn = mariadb.connect(
user="root",
password="maria",
host="database",
port=3306,
database="Hyacinth"
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
cur = conn.cursor()
@app.get("/")
def read_root():
return {"Hello": "World"}
我改变了什么,它做了什么:
version: "3"
services:
database:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: maria
volumes:
- /my/full/path/sql_scripts:/scripts
- hyacinth_db:/var/lib/mysql
web:
build: /my/full/path/hyacinthBE
volumes:
- /my/full/path/hyacinthBE/app:/code
ports:
- "8000:80"
volumes:
hyacinth_db:
控制代码:
from fastapi import FastAPI
import mariadb
import sys
app = FastAPI()
try:
conn = mariadb.connect(
user="root",
password="maria",
host="database",
port=3306,
database="Hyacinth"
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
cur = conn.cursor()
@app.get("/")
def read_root():
return {"Hello": "World"}
我改变了什么,它做了什么: