如何将 postgresql 添加到现有的 dockerfile?
How can I add postgresql to an existing dockerfile?
我正在 ASP.NET 核心 API 项目上工作,得到了 docker 的支持。
我希望我可以将 postgresql 或 mysql 添加到我的 docker 文件中并让它正常工作。现在,我对 docker 一点经验都没有,但是我对它的功能和工作方式很满意(尤其是我的电脑不会被我不需要的随机程序弄得乱七八糟,除了一个项目)。
我试过https://docs.docker.com/engine/examples/postgresql_service/中的例子
然而,它看起来并不真的适合我,我想知道我的东西是如何工作的。因此,即使它正常工作,我也宁愿有一个看起来更像这样的解决方案:
FROM postgresql:11.5
EXPOSE 5432
ENV <add password environment variable here>
我在添加 postgresql 之前的docker文件是
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 的理念是每个服务都在其 自己的 容器中运行。如果您遵循这种范式,事情对您来说会容易得多。从好的方面来说,有一条人迹罕至的道路可以让这变得舒适。查看这个简单的 docker compose 文件,例如
version: '3'
services:
web:
build: .
ports:
- "80:80"
postgres:
image: "postgres:9.6"
您没有连接到 localhost:5432
,而是连接到 postgres:5432
。
用 docker-compose up
旋转一切
我正在 ASP.NET 核心 API 项目上工作,得到了 docker 的支持。 我希望我可以将 postgresql 或 mysql 添加到我的 docker 文件中并让它正常工作。现在,我对 docker 一点经验都没有,但是我对它的功能和工作方式很满意(尤其是我的电脑不会被我不需要的随机程序弄得乱七八糟,除了一个项目)。
我试过https://docs.docker.com/engine/examples/postgresql_service/中的例子 然而,它看起来并不真的适合我,我想知道我的东西是如何工作的。因此,即使它正常工作,我也宁愿有一个看起来更像这样的解决方案:
FROM postgresql:11.5
EXPOSE 5432
ENV <add password environment variable here>
我在添加 postgresql 之前的docker文件是
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 的理念是每个服务都在其 自己的 容器中运行。如果您遵循这种范式,事情对您来说会容易得多。从好的方面来说,有一条人迹罕至的道路可以让这变得舒适。查看这个简单的 docker compose 文件,例如
version: '3'
services:
web:
build: .
ports:
- "80:80"
postgres:
image: "postgres:9.6"
您没有连接到 localhost:5432
,而是连接到 postgres:5432
。
用 docker-compose up