У меня есть приложение ASP.NET Core 2.1.0.База данных, управляющая приложением, - Postgres.
Я хочу развернуть приложение и его базу данных в виде контейнеров.В одном контейнере находится приложение, а в другом - база данных Postgres.
Я много искал, но не смог найти пошаговое руководство, как этого добиться.
Локально, мое приложение работает нормально,В Visual Studio 2017 (15.7.3) я затем щелкнул правой кнопкой мыши по файлу проекта и нажал на «Добавить поддержку Docker».Это дало мне следующий файл Docker:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 51986
EXPOSE 44360
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY Phoneden.Web/Phoneden.Web.csproj Phoneden.Web/
COPY Phoneden.DataAccess/Phoneden.DataAccess.csproj Phoneden.DataAccess/
COPY Phoneden.Entities/Phoneden.Entities.csproj Phoneden.Entities/
COPY Phoneden.Services/Phoneden.Services.csproj Phoneden.Services/
COPY Phoneden.ViewModels/Phoneden.ViewModels.csproj Phoneden.ViewModels/
RUN dotnet restore Phoneden.Web/Phoneden.Web.csproj
COPY . .
WORKDIR /src/Phoneden.Web
RUN dotnet build Phoneden.Web.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Phoneden.Web.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Phoneden.Web.dll"]
Это также дало мне docker-compose.yml
файл.Внутри этого я поместил следующее:
version: '3.4'
services:
phoneden.web:
build:
context: .
dockerfile: Phoneden.Web/Dockerfile
environment:
PaginationSettings: 10
DefaultConnection: Server=postgres-db;Database=phoneden;Username=postgres;Password=admin;Port=5432;
container_name: phoneden-web
depends_on:
- db
db:
image: postgres:10.4
restart: always
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: admin
container_name: postgres-db
ОБНОВЛЕНИЕ
Используя эту программу Я смог обнаружить, что порт 5432 уже былиспользуется локальной установкой Postgres.Я изменил порты на db:
в моем docker-compose.yml
файле на 5434:5434
, и теперь Postgres Db, кажется, работает нормально.Тем не менее, основное приложение asp.net теперь не работает, и я получаю это.