当前位置: 首页 > 知识库问答 >
问题:

使用Visual Studio 2017运行Docker容器时如何管理AWS凭据

邹学民
2023-03-14

我有一个。NET Core 2.0控制台应用程序使用Visual Studio 2017开发。launchSettings.json文件设置了一个环境变量,允许它使用开发人员的默认AWS凭据

"environmentVariables": {
  "AWS_PROFILE": "default"
  ...
}

我现在已经将Docker支持添加到VS解决方案中,并尝试在Linux Docker容器中运行该应用程序。当然,它会因以下异常而失败,因为它无法找到配置文件:

Amazon.Runtime.AmazonClientException: Unable to find the 'default' profile in CredentialProfileStoreChain.

在开发环境中将AWS凭据传递给Docker容器的最佳方式是什么?我显然不想将我的凭据作为环境变量放在launchSettings.json中,因为该文件致力于源代码控制。

编辑

明确一下,我在寻找一个解决方案,允许我的Docker容器在开发人员的机器上调试Visual Studhtml" target="_blank">io 2017时访问开发人员的凭据。发布版本将被部署到AWS,IAM角色将排除对凭证的需要。凭据位于文件< code>%USERPROFILE%\中。aws\credentials,我正在寻找一种解决方案,使我能够在Docker容器中使用它们,而不会在其他地方公开它们:因此,我不想将它们放在launchSettings.json或任何其他启动Docker容器的文件中。

我设想的解决方案可能涉及将 Windows 驱动器挂载在 Docker 容器(或至少是目录 %USERPROFILE%\.aws\)中,然后在 Docker 容器中设置一个环境变量(AWS_SHARED_CREDENTIALS_FILE ?),以便 AWS 自动查找凭证文件。

不过,我不知道如何做到这一点,因为我对Docker很陌生。

共有2个答案

欧阳声
2023-03-14

感谢Joe的回答,因为< code>/root对我来说很关键。这是我的< code>docker-compose.yml在Java/Maven/Mac OSX环境中的样子:

volumes:
  # Map in the aws directory
  - ~/.aws:/root/.aws:ro

:RO当然使它成为只读的。我没有必要显式定义区域和配置文件。

魏浩广
2023-03-14

我采用的解决方案是编辑由Visual Studio Tools for Docker添加的< code > Docker-compose . override . yml 文件,并添加以下几行:

version: '3'

services:
  mydockerapp:
    volumes:
      - ${USERPROFILE}/.aws:/root/.aws
    environment:
      - AWS_REGION=(your region)
      - AWS_PROFILE=default

这将包含aws凭据的.aws目录挂载到Docker容器中的适当位置(/root是默认主目录),并设置环境变量以选择配置文件和区域。启动设置。在Docker中运行时,不会使用.NET核心项目中的json文件

 类似资料:
  • Azure文档(https://docs.microsoft.com/en-us/Azure/devops/pipelines/tasks/build/docker?view=azure-devops)没有指定如何在Azure pipeline中运行docker容器。我们可以使用docker@2任务来构建/推送docker图像,但它没有运行容器的命令。通过查看旧版本Docker task的源代码,

  • 我很难弄明白这一点。 所以我有一个基于Ubuntu映像的dockerfile。在我的dockerfile的末尾,我有: 什么都没发生..docker ps显示没有正在运行的容器 但如果我跑: 容器开始运行,我在shell中,docker ps显示这个容器正在运行。所有工作都按预期进行,但我的django项目不在那里,我的理解是运行/bin/bash会覆盖dockerfile中的CMD,这意味着dj

  • 我试图通过AWS负载平衡器公开在kubernetes集群中运行的应用程序。我遵守了文件https://cloudyuga.guru/blog/cloud-controller-manager直到我在kubeadm中添加了云提供者=外部。conf文件。但这份文档是基于数字海洋云的,我正在从事AWS的工作,我很困惑是否需要运行任何部署。yaml文件以使处于挂起状态的吊舱运行,如果是,请提供链接,我现在

  • 问题内容: 我仅在尚未运行的情况下才需要运行docker容器。给定此命令。如果它不存在,我将如何运行它。 我可以使用任何脚本或语言。 问题答案: 使用过滤器检查是否存在特定名称的容器:( 请参阅docker ps Filterring ) 该如果第一部分是假的,才执行。 为了安全起见(可能会返回多个名称),您也可以选择这样做(如果您认为“ nginx”一词不能作为任何容器名称的一部分): 要么:

  • 只有当docker容器尚未运行时,我才需要运行它。给了这个命令。如果它不存在,我将如何运行它。 我对任何脚本或语言都持开放态度。

  • 问题内容: 我有两个工作程序节点:worker1和worker2和一个群集管理器。我仅在工作程序节点中运行所有服务。我需要从manager docker exec运行,以访问在工作节点中创建的一些容器,但我不断得到该服务未被识别的信息。我知道我可以在任何一个工作节点上运行docker exec,并且运行良好,但是我不想找到服务正在哪个节点上运行,然后SSH到指定的节点以运行docker exec命