gpt4 book ai didi

mysql - docker + MySQL : Can't access mysql outside the container

转载 作者:行者123 更新时间:2023-11-29 05:08:25 25 4
gpt4 key购买 nike

我有 2 个 docker 容器,它们都包含 mysql 数据库,我为每个容器打开端口 3305、3306。 enter image description here

对于 3306:3306 的容器,我可以通过以下方式在容器外访问它

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, Numeric, String

import os
cwd = os.getcwd()
import sys
sys.path.insert(0, cwd + '/vatic-docker/vatic')
#from models import *

engine = create_engine('mysql://root:1111' '@172.17.0.2:3306/vatic')
Session = sessionmaker (bind = engine)
session = Session()

Base = declarative_base()

但是我无法通过

访问 3305:3306 容器的 mysql 数据库
engine = create_engine('mysql://root:1111' '@172.17.0.3:3306/vatic')

返回错误信息:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2003, "Can't connect to MySQL server on '172.17.0.3' (111)")

我现在该怎么办?

最佳答案

连接字符串中的端口错误

所以

engine = create_engine('mysql://root:1111' '@172.17.0.3:3306/vatic')

应该是

engine = create_engine('mysql://root:1111@<host IP>:3305/vatic')

因为 3305 是您在主机上公开的端口

特别是如果 Docker 主机有一个 IP 地址 192.168.2.100 那么连接应该是

engine = create_engine('mysql://root:1111@192.168.2.100:3305/vatic')

-p 的格式是 hostPort:containerPort

https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose

关于mysql - docker + MySQL : Can't access mysql outside the container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com