postgresql - 如何对我的 dotnet 核心 + postgresql 应用程序进行 docker 化?

标签 postgresql docker .net-core docker-compose

我有一个使用 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,我发现我的应用程序运行良好。

为了对我的应用程序进行 docker 化,我将此文件添加到我的应用程序的根目录中。

docker 文件:

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

瞧!

关于postgresql - 如何对我的 dotnet 核心 + postgresql 应用程序进行 docker 化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030000/

相关文章:

.net-core - BouncyCasSTLe.NetCore : Impossible to find the CryptoApiRandomGenerator class

java - hibernate 4.1.7.Final 具有未知表 id 按映射顺序

php - 使用 php 部署 Liquibase 变更集

mysql - Docker MySQL 容器无法等待 MySQL 服务器准备就绪

node.js - Dockerfile将新创建的文件添加或复制到Docker镜像-没有此类文件或目录

azure - 在 Windows 容器上运行的应用程序仅在支持 Hyper-V 容器的 SKU 中可用

c# - Razor Core 安装 jquery.unobtrusive.ajax 缺少 js 文件

sql - Postgres 计算 GROUP BY 中的唯一结果

sql - 如何在postgres中对月份的日期记录进行分组后填补时间间隙

java - 当用户尝试执行 javac 时构建 Docker 镜像失败