我在Mac上使用Docker Desktop。
我通过docker-compose启动了MariaDB数据库容器:
version: '3'
volumes:
data:
services:
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- data:/var/lib/mysql
ports:
- "3306:3306"
然后,我通过docker-compose up -d
旋转它。db
容器运行正常。
在我的本地机器上(在本地Docker环境之外),我想访问这个db
容器,我想知道我是否可以使用localhost
访问Docker容器内运行的数据库。
所以,我通过我的spring Boot 应用程序验证了它,它直接运行在我的本地机器上而不是容器中,我将datasource定义为DATASOURCE_URL=jdbc:mariadb://localhost:3306/mydb
我的本地应用程序能够建立连接。但它让我感到困惑,行为不应该是只有同一个docker网络中的容器才能通过localhost
访问db
容器吗?有人能为我解释和解释吗?
1条答案
按热度按时间kq0g1dla1#
仔细看看你的docker-compose文件。您已经提到了以下端口字段。
这意味着你将容器端口3306暴露给主机端口3306(也就是你的mac)。所以,这就是为什么你可以通过
localhost
访问它。