安装PostgreSQL到一个asp.net核心容器

我是Docker世界的初学者。 我已经创build了一个ASP.net核心 Web API,并使用PostgreSQL在本地主机上成功运行。 现在,我已经将WebAPI添加到Docker容器中了。 我正在使用Windows 10,Visual Studio 2015,Docker for Windows 10和Powershell。 现在的问题是,我无法弄清楚以下几点。

  1. 如何在我的容器内设置PostgreSQL?
  2. 如何创build一个数据库和表?
  3. 如何连接上面的数据库与WebAPI?

当我尝试调用API时,它会发出“连接被拒绝”错误。 数据库连接失败。 我相信这是因为容器内没有数据库。 我找不到一个初学者理解这个程序的正确方法。 任何步骤的帮助将是非常有帮助的。

你想运行在一个单独的容器中的每个应用程序,否则你最终与以前一样的应用程序地狱。

但是您必须使用networking将容器连接在一起。

步骤如下:

  1. 创build一个桥梁networking,名称为:bride-network: docker network create bride-network
  2. 运行一个名为postgres容器,里面有postgres数据库。 确保将其添加到networking中: --network bridge-network
  3. 添加您的应用程序广告docker容器:也可以使用--network bridge-network将其添加到此--network bridge-network

现在你的应用程序可以通过主机名为 http://postgres (基本上是http:// [container-name] )来访问postgres数据库。

要做到这一点,你可以创build一个docker-compose.yml文件,然后运行docker docker-compose -f yourfile.yml up来创build一切

为什么拆分容器

docker工人的想法是1个容器运行1个应用程序。 当这个过程停止时,docker知道容器已经停止/死亡。 如果你在1个容器中添加多个应用程序,docker将不知道。 也可能是应用程序产生问题,例如:如果两个应用程序注册听同一个端口怎么办?

另一个问题是当你想扩大规模时:创build重复的容器。 那么你是否也想用你的应用程序扩大数据库1 = 1? 那么你的单一​​来源在哪里呢?

所以你分开每个容器1个应用程序:

  • 每个应用程序都在自己的沙箱中运行,并且只能通过http / udp受到任何其他应用程序/容器的伤害/通信。
  • 您可以逐个(水平)扩展它们。
  • 您可以通过环境variables单独configuration它们。