【发布时间】:2018-08-19 18:57:16
【问题描述】:
在我的项目文件夹中,我有一个 .NET Core 2.1 Web API 项目、一个 XUnit 测试项目和我的 docker compose 文件。
在我的 API 项目中,我的 Dockerfile 有以下内容
FROM microsoft/dotnet:2.1-sdk AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.1-sdk AS build
ARG NUGET_SOURCE
WORKDIR /src
COPY api/api.csproj api/
RUN dotnet restore api/api.csproj
COPY . .
WORKDIR /src/api
RUN dotnet build api.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish api.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
RUN apt-get update
RUN apt-get install -y curl unzip
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
ENTRYPOINT ["dotnet", "api.dll"]
在我的 docker-compose.yml 文件中,我有以下内容
version: '3.4'
services:
api:
image: myimage
ports:
- 5000:80
environment:
GoogleKey: thekey
RedisConnectionString: redis
build:
context: .
dockerfile: api/Dockerfile
args:
NUGET_SOURCE: https://api.nuget.org/v3/index.json
volumes:
- app_data:/app
entrypoint: tail -f /dev/null
depends_on:
- redis
redis:
image: redis:3.2-alpine
volumes:
- redis_data:/data
volumes:
redis_data:
app_data:
在 VS Code 的 launch.json 文件中,我添加了以下内容
{
"name": "Docker",
"type": "coreclr",
"request": "attach",
"sourceFileMap": {
"/app": "${workspaceRoot}"
},
"processId" : "${command:pickRemoteProcess}",
"pipeTransport": {
"debuggerPath": "/root/vsdbg/vsdbg",
"pipeProgram": "docker",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": false,
"pipeArgs": [
"exec -i myimage_api_1"
]
}
},
从那里我运行docker-compose -f docker-compose.yml up -d --build,然后运行docker-compose exec api dotnet api.dll。
然后我单击 Docker 调试窗格中的播放按钮,并尝试将其附加到 tail 和 api.dll 命令,但没有一个断点被命中。
我在配置中遗漏了什么?
谢谢!
【问题讨论】:
-
你有没有让它工作?
标签: docker visual-studio-code .net-core docker-compose dockerfile