从本地机器访问数据库容器

问题描述 投票:0回答:1

我在 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_URL=jdbc:mariadb://localhost:3306/mydb

我的本地应用程序能够建立连接。但这让我感到困惑,行为不应该是只有同一个docker网络中的容器才能通过

db
访问
localhost
容器吗?有人可以为我详细说明和解释吗?

docker docker-compose mariadb docker-networking
1个回答
0
投票

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

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

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

localhost
访问它。

© www.soinside.com 2019 - 2024. All rights reserved.