如何将本地托管的MySQL数据库与Docker容器连接

通过docker-

compose.yml我能够运行该应用程序。现在,我们想将应用程序移至生产环境,但是我们不想使用容器数据库。那么有什么办法可以使我的本地MySQL数据库与使用的应用程序连接docker-

compose吗?

我的docker-compose.yml看起来像:

version: '3'

services:

web-app:

build:

context: .

dockerfile: web-app/Dockerfile

ports:

- 8080:8080

links:

- app-db

app-db:

build:

context: .

dockerfile: app-db/Dockerfile

environment:

- MYSQL_ROOT_PASSWORD=password

- MYSQL_DATABASE=Optimize

ports:

- 3306:3306

app-db我只想连接到本地托管的mysql数据库,而不是一部分。

回答:

在docker网络中找到主机IP。如果您使用docker-compose.yml version: "3",则该IP可能是:172.18.0.1

搜索您的容器(您的主机)的“网关”:

docker inspect <container-id-or-name> | grep Gateway

"Gateway": "",

"IPv6Gateway": "",

"Gateway": "172.18.0.1",

"IPv6Gateway": "",

因此,在您的docker应用程序内部,MySQL的指向如下172.18.0.1:3306:(也许在配置文件中)。请注意,只要docker网络仍然相同,该IP就是固定的(该网络是由docker-

compose创建的,除非您这样做,否则不会将其删除docker-compose down

另外,检查您的MySQL是否正在监听其所有接口。在my.cnf搜索bind-

address中应该是0.0.0.0(如果服务器具有公共IP,请考虑安全性问题)。


或者,您可以将与主机相同的网络连接到容器,以共享本地主机,因此容器将在其中找到mysql。使用网络模式作为“主机”:

version: '3'

services:

web-app:

build:

context: .

dockerfile: web-app/Dockerfile

ports:

- 8080:8080

network_mode: "host"

然后,将您hibernate.properties的mysql 指向如下:localhost:3306

以上是 如何将本地托管的MySQL数据库与Docker容器连接 的全部内容, 来源链接: utcz.com/qa/415420.html

回到顶部