我想构建一个包含我的应用的docker映像。构建过程(测试阶段)需要一个数据库。当我构建应用程序(没有docker映像)时,我只是在本地启动数据库:
docker run -ti --rm --name postgres -p 5432:5432 postgres:10.9-alpine
然后我构建应用程序。但是当我从dockerfile构建应用程序时,它无法连接到本地数据库。
我如何允许我的Docker构建查看数据库?我必须使用docker-compose来构建我的应用程序吗?还是可以以某种方式连接到我的本地数据库?
答案 0 :(得分:0)
您可以通过两种方式做到这一点。
--link <name or id>
所以您可以像这样与数据库链接
docker run -d -P --name web --link db:db your_appp
现在,您的应用程序可以使用主机名db
与数据库连接。
现在
警告:
--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,并且还需要发布数据库端口。