postgresql - 如何对接我的 dotnet core + postgresql 应用程序?
问题描述
我有一个使用 Angular 模板创建的 dotnet 核心应用程序,它与 postgresql 数据库通信。
在我的本地机器上,我在终端上运行以下命令来运行数据库容器:
docker run -p 5432:5432 --name accman-postgresql -e POSTGRES_PASSWORD=mypass -d -v 'accman-postgresql-volume:/var/lib/postgresql/data' postgres:10.4
然后在 VsCode 中按 F5,我发现我的应用程序运行良好。
为了对我的应用程序进行 dockerise,我将此文件添加到了我的应用程序的根目录中。
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
# install nodejs for angular, webpack middleware
RUN apt-get update
RUN apt-get -f install
RUN apt-get install -y wget
RUN wget -qO- https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get install -y build-essential nodejs
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Web.dll"]
现在我想我必须创建一个 docker-compose 文件。你能帮我创建我的 docker-compose.yml 文件吗?
谢谢,
解决方案
我想通了,这是我的 docker-compose.yml文件的最终版本:
version: '3'
services:
web:
container_name: 'accman-web-app'
image: 'accman-web'
build:
context: .
dockerfile: Dockerfile
ports:
- '8090:80'
depends_on:
- 'postgres'
networks:
- accman-network
postgres:
ports:
- '5432:5432'
container_name: accman-postgresql
environment:
- POSTGRES_PASSWORD=mypass
volumes:
- 'accman-postgresql-volume:/var/lib/postgresql/data'
image: 'postgres:10.4'
networks:
- accman-network
volumes:
accman-postgresql-volume:
networks:
accman-network:
driver: bridge
您可以使用composerize来了解如何将服务添加到您的 docker-compose 文件中。
现在您可以连续运行以下命令:
docker-compose build
docker-compose up
瞧!
推荐阅读
- laravel - Laravel:如何分别获取日期范围内的所有日期和日期范围内的所有日期?
- python - Google Translate V2 示例代码无法按预期工作
- python - 不和谐.py | 如何在全局错误处理程序的命令中显示所有缺少的参数
- reactjs - 使用包裹 js、process.env 构建。
在 netlify 中部署时返回 null - android - 深度链接仅打开一个应用实例?
- python - 如何使用 Python 套接字连接互联网上的两台计算机?
- css - 如何修复影响整行按钮的边距
- event-handling - PowerDesigner - 如何更改列名/代码并通过用户定义的表单存储旧的 - 一种 OnChange 事件
- javascript - 在javascript中返回对象的属性
- azure - 通过VM的终端打开一个Azure VM的端口