【发布时间】:2019-08-07 15:11:02
【问题描述】:
我是 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.yml 和 Dockerfile 所在的位置:
这是我的 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是否需要端口映射?
任何帮助将不胜感激,如果需要更多信息,请告诉我。
【问题讨论】:
-
这对我来说一切正常。重新端口映射,需要暴露端口。 docs.docker.com/compose/compose-file/#ports
-
您在使用 docker-compose 构建时是否遇到任何错误?
标签: c# .net docker asp.net-core