首页 > 解决方案 > VS 2019 在构建 dproj 项目时未使用 docker-compose.vs.release.yml

问题描述

根据文档, Visual Studio 应该在以快速模式(调试配置的默认设置)和常规模式(发布的默认设置)构建docker-compose.vs.debug.yml时使用文件来覆盖 docker-compose 配置。docker-compose.vs.release.yml

docker-compose.vs.release.yml虽然 Debug 配置的一切都按预期工作,但在 Release 中构建时我无法让 VS 考虑在内。

这是我拥有的 dproj 项目文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Linux</DockerTargetOS>
    <ProjectGuid>084e5c36-04a5-40d0-92a8-de135aec65e6</ProjectGuid>
    <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
    <DockerServiceUrl>{Scheme}://localhost:{ServicePort}/weatherforecast</DockerServiceUrl>
    <DockerServiceName>containersampleapi</DockerServiceName>
  </PropertyGroup>
  <ItemGroup>
    <None Include="docker-compose.override.yml">
      <DependentUpon>docker-compose.yml</DependentUpon>
    </None>
    <None Include="docker-compose.vs.debug.yml">
      <DependentUpon>docker-compose.yml</DependentUpon>
    </None>
    <None Include="docker-compose.vs.release.yml">
      <DependentUpon>docker-compose.yml</DependentUpon>
    </None>
    <None Include="docker-compose.yml" />
    <None Include=".dockerignore" />
  </ItemGroup>
</Project>

这是发布配置的构建日志(注意如何用于命令而不是docker-compose.vs.release.yml 用于命令):docker-compose configdocker-compose build

Build started...
1>------ Build started: Project: ContainerSampleApi, Configuration: Release Any CPU ------
Restored C:\Users\d.sauchanka\projects\other\ContainerSample\ContainerSampleApi\ContainerSampleApi.csproj (in 2 ms).
1>ContainerSampleApi -> C:\Users\d.sauchanka\projects\other\ContainerSample\ContainerSampleApi\bin\Release\netcoreapp3.1\ContainerSampleApi.dll
2>------ Build started: Project: docker-compose, Configuration: Release Any CPU ------
2>docker-compose  -f "C:\Users\d.sauchanka\projects\other\ContainerSample\docker-compose.yml" -f "C:\Users\d.sauchanka\projects\other\ContainerSample\docker-compose.override.yml" -f "C:\Users\d.sauchanka\projects\other\ContainerSample\docker-compose.vs.release.yml" -p dockercompose14673387833521307962 --ansi never config
2>services:
2>  containersampleapi:
2>    build:
2>      context: C:\Users\d.sauchanka\projects\other\ContainerSample
2>      dockerfile: ContainerSampleApi/Dockerfile
2>    environment:
2>      ASPNETCORE_ENVIRONMENT: Development
2>    image: containersampleapi
2>    ports:
2>    - target: 80
2>version: '3.4'
2>ContainerSampleApi -> C:\Users\d.sauchanka\projects\other\ContainerSample\ContainerSampleApi\bin\Release\netcoreapp3.1\ContainerSampleApi.dll
2>ContainerSampleApi -> C:\Users\d.sauchanka\projects\other\ContainerSample\ContainerSampleApi\obj\Release\netcoreapp3.1\PubTmp\Out\
2>docker-compose  -f "C:\Users\d.sauchanka\projects\other\ContainerSample\docker-compose.yml" -f "C:\Users\d.sauchanka\projects\other\ContainerSample\docker-compose.override.yml" -p dockercompose14673387833521307962 --ansi never build
2>Building containersampleapi
2>#1 [internal] load build definition from Dockerfile
2>#1 sha256:231a855da1e4b0c065c6781927c6782e38c30e85d32cb19d05b39d274f741019
2>#1 transferring dockerfile: 32B done
2>#1 DONE 0.0s
2>#2 [internal] load .dockerignore
2>#2 sha256:d01eb1b93416926951ee38f2e66ac54c55cac00921bb9509dbf897bdd74161f6
2>#2 transferring context: 35B done
2>#2 DONE 0.0s
2>#4 [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:3.1
2>#4 sha256:6cc59bb059858e4ec7070d9fc240ac93870aa8bdfd5679ab219e693360eb146a
2>#4 DONE 0.0s
2>#3 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:3.1
2>#3 sha256:ce64eac29b07ebbf4d973b99e492aaf8ba85556a3d349a716d703b36362d10a7
2>#3 DONE 0.5s
2>#8 [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:3.1@sha256:be53a1481ada368f69c2c1ad83b3878cdc660493d84fbd9c514c55c02d72e14f
2>#8 sha256:9894704ab85bed607086443a0169314ee583c311880223ac3d4fa4288063c349
2>#8 DONE 0.0s
2>#5 [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:3.1
2>#5 sha256:0eaac8d1bc7e1a623c4cc217fa538bcc6eb0acaa7485bb1ff1c978851c73f11b
2>#5 DONE 0.0s
2>#10 [internal] load build context
2>#10 sha256:1967b084ba318eff82908b60762af070bb43e21f57f32ed858a7ff57b7bdd0b5
2>#10 transferring context: 667B done
2>#10 DONE 0.0s
2>#7 [final 1/2] WORKDIR /app
2>#7 sha256:33f5690fbf2e46b21014e59c73d1cd5069bf6dfcc9433d93572ca9659ca77995
2>#7 CACHED
2>#16 [publish 1/1] RUN dotnet publish "ContainerSampleApi.csproj" -c Release -o /app/publish
2>#16 sha256:98284b8efb646c36da06409584381aa94278ac295f37928c79972598ee4ca4cb
2>#16 CACHED
2>#13 [build 5/7] COPY . .
2>#13 sha256:981d5f88e2038bd0530bb3617fff724b5f73c29d09c936cb41f4143c3b87d5c0
2>#13 CACHED
2>#6 [base 2/2] WORKDIR /app
2>#6 sha256:3f31223f8176619e6b67e46419a49419facb2494f71fd0438712aaeda18bd3f5
2>#6 CACHED
2>#9 [build 2/7] WORKDIR /src
2>#9 sha256:65d82ab6737800e288cbe3d8a1892377cca6f13b02abb64ff178215c14c2a9aa
2>#9 CACHED
2>#12 [build 4/7] RUN dotnet restore "ContainerSampleApi/ContainerSampleApi.csproj"
2>#12 sha256:dbd9792916772e366509d96324f5b9a90b1a8c32f3be40ac0e9238d70f262d7c
2>#12 CACHED
2>#15 [build 7/7] RUN dotnet build "ContainerSampleApi.csproj" -c Release -o /app/build
2>#15 sha256:7243a00c76af0376c574aeae7a626e537b8bfd1b6bf2121db153fe3fa37c573a
2>#15 CACHED
2>#14 [build 6/7] WORKDIR /src/ContainerSampleApi
2>#14 sha256:54552119ca404493e2696e3c36d257e30e47fd06453b55ba3c21fa5dbad05955
2>#14 CACHED
2>#11 [build 3/7] COPY [ContainerSampleApi/ContainerSampleApi.csproj, ContainerSampleApi/]
2>#11 sha256:ccd63ceafee8b97f63bfc764eb53fa756eec50226dd5a72ef06737d5f87025bd
2>#11 CACHED
2>#17 [final 2/2] COPY --from=publish /app/publish .
2>#17 sha256:0c71bce15007cf7630757dadb5ec5f5eb143fcbae991737d06621e8f0e68b17d
2>#17 CACHED
2>#18 exporting to image
2>#18 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
2>#18 exporting layers done
2>#18 writing image sha256:8bef26df1affd96a2acbb89c0ee9a475cfd5f279229bb5f2e4bc8d78057ee0d4 done
2>#18 naming to docker.io/library/containersampleapi done
2>#18 DONE 0.0s
2>Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

有没有人遇到过同样的行为?是我做错了什么还是VS没有按记录工作?

标签: visual-studiodockerdocker-composevisual-studio-2019

解决方案


推荐阅读