gpt4 book ai didi

c# - Docker-Compose YML 与 ASP.NET Core 2.2 Web API 和 SQL Server 2017

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:09 25 4
gpt4 key购买 nike

我是 Docker (v19.03.0) 的新手,我正在使用 Visual Studio 2019 (v16.2.0) 和 .NET Core 2.2,我希望我的 docker-compose 能得到一些帮助。 yml 文件,因为我想创建一个由我的 Web API 和 SQL Server 2017 组成的微服务。

目前,我的 Web API 指向 SQL 2017 的容器化 Linux 实例,它是从我的 C:\DockerVolumes 驱动器批量安装我的数据库。目前,这是通过 IIS 完美运行的。

下一步是将我的 Web Api 容器化,我在 Visual Studio 中右键单击我的项目,在运行 docker ps -a 之后,它似乎与我的 SQL 容器一起运行。

这是我的docker-compose.yml

version: '3.7'
services:
web:
build:
dockerfile: Dockerfile
context: .
ports:
- '8080:80'
depends_on:
- db
db:
image: 'mcr.microsoft.com/mssql/server:2017-latest'
ports:
- '1433:1433'
volumes:
- 'C:\DockerVolumes:/var/opt/mssql/data'
environment:
SA_PASSWORD: 12345678
ACCEPT_EULA: Y

这是我的 Web API 的 docker-compose.ymlDockerfile 所在的位置:

File Explorer Visual Studio

这是我的 Web Api 的 Dockerfile:

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

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

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SnowdonAPI_05.dll"]

在我做任何其他事情之前,我想确保我没有遗漏任何东西(我的 yml 文件中的步骤或东西,显然是我唯一能想到的关于我的 Web Api 的东西在服务启动后将连接字符串更改为 server=db;.....。此外,我不确定 SQL 是否需要端口映射?

非常感谢任何帮助,如果需要更多信息,请告诉我。

最佳答案

对于你当前的docker-compose和dockerfile,dockerfile的相对路径是错误的。

对于 docker-compose,您指定当前 docker-compose 构建路径是 context: .

对于 dockerfile,您的解决方案和 dockerfile 在同一个文件夹中,但是您使用 COPY ["SnowdonAPI_05/SnowdonAPI_05.csproj", "SnowdonAPI_05/"] 构建它,它会导致错误,因为 SnowdonAPI_05/SnowdonAPI_05.csproj 将找不到。

有两种选择:

  1. 将 dockerfile 中的所有源路径更改为相对于 dockerfile 路径,例如将 COPY ["SnowdonAPI_05/SnowdonAPI_05.csproj", "SnowdonAPI_05/"] 更改为 COPY ["SnowdonAPI_05.csproj", "SnowdonAPI_05/"]
  2. 将 docker-compose 移动到父文件夹并将 dockerfile: Dockerfile 更改为 dockerfile: SnowdonAPI_05/Dockerfile

关于c# - Docker-Compose YML 与 ASP.NET Core 2.2 Web API 和 SQL Server 2017,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57397486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com