【问题标题】:How can I add postgresql to an existing dockerfile?如何将 postgresql 添加到现有的 dockerfile?
【发布时间】:2023-03-29 13:26:01
【问题描述】:

我正在开发一个支持 docker 的 ASP.NET Core API 项目。 我希望我可以将 postgresql 或 mysql 添加到我的 dockerfile 并让它正常工作。现在,我对 docker 没有太多经验,但我对它的功能和工作方式感到满意(特别是我的电脑不会被我不需要的随机程序弄乱,除了一个项目)。

我已经尝试了https://docs.docker.com/engine/examples/postgresql_service/ 中的示例 然而,它看起来并不适合我,我想知道我的东西是如何工作的。所以即使它工作正常,我宁愿有一个看起来更像这样的解决方案:

FROM postgresql:11.5
EXPOSE 5432
ENV <add password environment variable here>

我在添加postgresql之前的dockerfile是

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["ModOs__Api/ModOs__Api.csproj", "ModOs__Api/"]
RUN dotnet restore "ModOs__Api/ModOs__Api.csproj"
COPY . .
WORKDIR "/src/ModOs__Api"
RUN dotnet build "ModOs__Api.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "ModOs__Api.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .

ENTRYPOINT ["dotnet", "ModOs__Api.dll"]

添加 postgres 后,我希望能够通过 c# 代码中的 URL localhost:5432 简单地连接到它。另外,如果可能的话,如果我可以在浏览器中查看数据库,那就太棒了(但是,如果这会使事情复杂化 10 倍,请不要在上面浪费时间)。

什么是最好的或最好的方法?

提前致谢!

【问题讨论】:

  • 您几乎总是将数据库作为单独的容器运行,可能使用 Docker Compose 之类的工具来编排它们。在 Docker 中,数据库的主机名永远不会是 localhost。 Docker 文档包含一个 Compose and ASP.NET Core with SQL Server 示例应用程序,它可能是一个合理的起点。

标签: c# postgresql docker asp.net-core visual-studio-2019


【解决方案1】:

你没有。尽管可能,但我建议不要这样做。 Docker 的理念是每个服务都在它自己的自己的容器中运行。如果你遵循这个范式,事情对你来说会容易得多。从好的方面来说,这是一条人迹罕至的道路,让这一切变得舒适。以这个简单的docker compose 文件为例

version: '3'
services:
  web:
    build: .
    ports:
      - "80:80"
  postgres:
    image: "postgres:9.6"

您连接到postgres:5432,而不是连接到localhost:5432

使用docker-compose up 旋转一切

【讨论】:

  • 谢谢伙计!但是,由于我在这个项目中使用了 Visual Studio(我不知道这是否是实际原因),所以它不能正常工作。要使其正常工作,请单击要将 docker-compose 添加到 >Add>Container Orchestrator 支持的项目,然后选择 docker-compose 即可。添加 postgres: image: "postgres:9.6" 并完成(注意 9.6 :))
  • Ops,现在更新了答案。很高兴在 Visual Studio 中如此简单。甜蜜。
猜你喜欢
  • 2021-12-20
  • 2023-03-14
  • 2023-01-13
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
相关资源
最近更新 更多