mariadb 从本地计算机访问数据库容器

jvlzgdj9  于 2023-05-06  发布在  其他
关注(0)|答案(1)|浏览(165)

我在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容器吗?有人能为我解释和解释吗?

kq0g1dla

kq0g1dla1#

仔细看看你的docker-compose文件。您已经提到了以下端口字段。

ports:
  - "3306:3306" => "HOST_MACHINE_PORT:CONTAINER_PORT"

这意味着你将容器端口3306暴露给主机端口3306(也就是你的mac)。所以,这就是为什么你可以通过localhost访问它。

相关问题