如何在容器中引用非docker IP地址



使用docker-compose文件时,我可以在其他容器中通过容器的名称引用容器。

version: '3'
network:
mynet:
external: false
services:
database:
image: mariadb
network:
- mynet
application:
build: .
network:
- mynet

上面的意思是我可以从application容器内部引用数据库,比如database:3306

有没有一种方法可以让我添加一个可以以相同方式引用的非docker ip地址?假设我的database服务器不是由docker管理的,但我想以同样的方式在application中引用它?

links已经被弃用了,我知道,但我希望能够做一些类似的事情:

服务:应用程序:内部版本:。链接:-"127.0.0.10:数据库">

如果没有links,这样的事情可能发生吗?

我通常通过应用程序要查找的环境变量来执行此操作。例如,应用程序代码可以使用名为DATABASE_URL的环境变量,然后您只需要确保在Docker映像运行时设置了它。使用上面的docker-compose.yml文件作为基础,您可以像这样传递数据库url:

version: '3'
network:
mynet:
external: false
services:
database:
image: mariadb
network:
- mynet
application:
build: .
network:
- mynet
environment:
DATABASE_URL: "mysql://username:password@my-database-url:3306"