首页 > 解决方案 > Visual Studio 正在删除我在 docker.compose.vs.debug.g.yml 中添加的环境变量

问题描述

首先,我在 Visual Studio 2019 中本地运行它,这就是我目前正在尝试找到我的问题的环境。它是 .NETCORE 3.1 并进入 Linux。

我继承了一个需要在本地调试的项目,但将被推送到 AWS 上的 ECS 大部分 CI/CD 已经围绕这个容器设置,我觉得它限制了我调试它的问题的能力,但这就是我被交给了,所以我在这里和你们聊天。

目前,该应用程序在容器外运行良好并且能够使用我的开发环境凭据。

当我尝试在 docker-compose 中本地调试容器时,问题似乎堆积起来,因此 docker 不再有权访问 AWS 凭证,因为它是它自己的小容器。

我最初的邪恶计划只是查看我的输出,然后更正它用于运行的 docker-compose.vs.debug.g.yml,并将我的密钥推入其中,同时调试 AWS ECS 容器退出代码 139 的原因在 AWS 上。

问题是现在似乎有很多齿轮在旋转,只是做一个简单的“docker run -e awssecretkey=YOUWISHBOI”。几乎是不可能的。

注意:请不要挂断下面的任何错误,这只是为了演示我想在哪里推送我的环境变量。我不小心重命名了这些程序,以保持无辜者的匿名。

version: '3.4'

services:
  pickle.application:
    image: pickle:dev
    container_name: pickle.Application
    build:
      target: base
      labels:
        com.microsoft.created-by: "visual-studio"
        com.microsoft.visual-studio.project-name: "pickle.Application"
    environment:
      - NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages
      **- HOW_DO_I=KEEP_SOMETHING_HERE**
    volumes:
      - C:\mq-tech\pickle-system\pickle\pickle\src\pickle.Application:/app
      - C:\Users\Carter-PC\vsdbg\vs2017u5:/remote_debugger:rw
      - C:\Users\Carter-PC\.nuget\packages\:/root/.nuget/packages:ro
      - C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages:ro
    entrypoint: tail -f /dev/null
    labels:
      com.microsoft.visualstudio.debuggee.program: "dotnet"
      com.microsoft.visualstudio.debuggee.arguments: " --additionalProbingPath /root/.nuget/packages --additionalProbingPath /root/.nuget/fallbackpackages  \"/app/bin/Debug/netcoreapp3.1/pickleApplication.dll\""
      com.microsoft.visualstudio.debuggee.workingdirectory: "/app"
      com.microsoft.visualstudio.debuggee.killprogram: "/bin/sh -c \"if PID=$$(pidof dotnet); then kill $$PID; fi\""
    tty: true

所以我想我的问题是使用 docker-compose 调试将我的 AWS 环境变量放在它将调试并拥有它们的正确方法是什么?

我想我可能会以完全错误的方式来,请怜悯!

标签: visual-studioamazon-web-servicesdockerdocker-compose

解决方案


我意识到这个答案有点晚了,但仍然有人可能会觉得它很有用。

您可以创建一个docker-compose.vs.debug.yml文件,该文件将在运行 docker-compose 命令时由 VS 作为最后一个提供(因此它不会被覆盖)。

它看起来像这样:

version: '3.4'

services:
  pickle.application:
    environment:
      - HOW_DO_I=KEEP_SOMETHING_HERE

相同的规则适用于docker-compose.vs.release.yml文件,但在发布模式下。

文档-> https://docs.microsoft.com/en-us/visualstudio/containers/docker-compose-properties?view=vs-2019#docker-compose-file-labels


推荐阅读