安装PostgreSQL到一个asp.net核心容器
我是Docker世界的初学者。 我已经创build了一个ASP.net核心 Web API,并使用PostgreSQL在本地主机上成功运行。 现在,我已经将WebAPI添加到Docker容器中了。 我正在使用Windows 10,Visual Studio 2015,Docker for Windows 10和Powershell。 现在的问题是,我无法弄清楚以下几点。
- 如何在我的容器内设置PostgreSQL?
- 如何创build一个数据库和表?
- 如何连接上面的数据库与WebAPI?
当我尝试调用API时,它会发出“连接被拒绝”错误。 数据库连接失败。 我相信这是因为容器内没有数据库。 我找不到一个初学者理解这个程序的正确方法。 任何步骤的帮助将是非常有帮助的。
你想运行在一个单独的容器中的每个应用程序,否则你最终与以前一样的应用程序地狱。
但是您必须使用networking将容器连接在一起。
步骤如下:
- 创build一个桥梁networking,名称为:bride-network:
docker network create bride-network
- 运行一个名为
postgres
容器,里面有postgres数据库。 确保将其添加到networking中:--network bridge-network
- 添加您的应用程序广告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它们。