我想构建一个包含我的应用程序的docker镜像。构建过程(测试阶段)需要一个数据库。当我构建应用程序(没有docker镜像)时,我只是在本地启动数据库:
docker run -ti --rm --name postgres -p 5432:5432 postgres:10.9-alpine然后我构建应用程序。但是当我从dockerfile构建应用程序时,它无法连接到本地数据库。
我怎样才能让我的docker版本看到db?我必须使用docker-compose来构建我的应用吗?或者它能以某种方式连接到我的本地数据库?
发布于 2019-09-24 01:13:44
您可以通过两种方式完成此操作。
链接
--link <name or id>
所以你可以像这样链接到DB
docker run -d -P --name web --link db:db your_appp现在,您的应用程序可以使用主机名db连接到DB。
现在
Docker警告:--link标志是Docker的遗留功能。它最终可能会被移除。除非你绝对需要继续使用它。
https://docs.docker.com/network/links/
Docker-compose:
version: "3.7"
services:
app:
build: .
depends_on:
- db
redis:
image: redis
db:
image: postgres在上述情况下,可以使用主机名db访问数据库。
如果你想在Dockerfile构建时连接,那么你需要使用主机IP,同时你还需要发布DB端口。
https://stackoverflow.com/questions/58066348
复制相似问题