如何从 docker 容器访问 (mysql) 主机端口?
How to access (mysql) host port from docker container?
我有一台运行本机 mysql
安装(不是容器)的主机。
从 docker
容器我现在想从 java
spring-boot
应用程序连接到该端口(默认情况下 3306
)。
但是不行:
docker-compose.yml
:
version: '3.7'
services:
customer-app:
ports:
- "3306:3306"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/db
来自 docker-compose up
的结果:
Cannot start service customer-app: driver failed programming external connectivity on endpoint:
Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
这可能不是直接针对 java 应用程序的问题,而是更笼统的问题:
如何从 docker 容器 中访问 host 系统上的端口?
我在 docker-compose.yml
中添加了以下内容:
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://host.docker.internal:3306/db
我有一台运行本机 mysql
安装(不是容器)的主机。
从 docker
容器我现在想从 java
spring-boot
应用程序连接到该端口(默认情况下 3306
)。
但是不行:
docker-compose.yml
:
version: '3.7'
services:
customer-app:
ports:
- "3306:3306"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/db
来自 docker-compose up
的结果:
Cannot start service customer-app: driver failed programming external connectivity on endpoint:
Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use
这可能不是直接针对 java 应用程序的问题,而是更笼统的问题:
如何从 docker 容器 中访问 host 系统上的端口?
我在 docker-compose.yml
中添加了以下内容:
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://host.docker.internal:3306/db