如何构建需要其他映像/端口的docker映像?

时间:2019-09-23 16:13:02

标签: docker docker-compose

我想构建一个包含我的应用的docker映像。构建过程(测试阶段)需要一个数据库。当我构建应用程序(没有docker映像)时,我只是在本地启动数据库:

docker run -ti --rm --name postgres -p 5432:5432 postgres:10.9-alpine

然后我构建应用程序。但是当我从dockerfile构建应用程序时,它无法连接到本地数据库。

我如何允许我的Docker构建查看数据库?我必须使用docker-compose来构建我的应用程序吗?还是可以以某种方式连接到我的本地数据库?

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式做到这一点。

  • 旧版docker链接
  • 由Docker组成的网络

--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,并且还需要发布数据库端口。