Как смонтировать do tnet пользовательских секретов в devcontainer? - PullRequest
1 голос
/ 06 апреля 2020

Я использую devcontainer для сборки и отладки моих. NET Базовых приложений. Я хотел бы поделиться пользовательскими секретами между моей хост-машиной и контейнером.

Как я могу это сделать, если расположение пользовательских секретов зависит от хост-машины?

  • Windows:% APPDATA% / Microsoft / UserSecrets
  • Mac / Linux: $ HOME / .microsoft / usersecrets

Я попытался смонтировать оба расположения , но это выдает ошибку.

  • .devcontainer / devcontainer. json
{
  "dockerComposeFile":"docker-compose.yml",
  "service":"devcontainer",
  "runServices":[],
  "workspaceFolder":"/workspace",
  "forwardPorts":[
    5000,
    5001
  ],
  "remoteEnv":{
    "ASPNETCORE_ENVIRONMENT":"Development",
    "ASPNETCORE_URLS":"https://+:5001;http://+:5000"
  }
}
  • .devcontainer / docker -compose.yml
version: "3.7"
services:
    devcontainer:
        image: mydevcontainerimage:12345
        volumes:
            - ..:/workspace:cached
            - ${APPDATA}/Microsoft/UserSecrets/:/root/.microsoft/usersecrets
            - ${HOME}/.microsoft/usersecrets:/root/.microsoft/usersecrets

            # Forwards the local Docker socket to the container.
            - /var/run/docker.sock:/var/run/docker.sock
        command: sleep infinity

Docker -составить сбои с ошибкой.

ERROR: Duplicate mount points: [/.microsoft/usersecrets:/root/.microsoft/usersecrets:rw, C:\Users\steven\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:rw]

1 Ответ

2 голосов
/ 06 мая 2020

Решением может быть использование именованного тома между хостом и контейнером. Следовательно, docker -compose будет ссылаться только на этот именованный том. Хотя создание именованного тома будет указываться c для хоста.

Для создания именованного тома на основе пути к хосту см. здесь

Но, как указано здесь

Встроенный локальный драйвер на Windows не поддерживает никаких опций.

И, например, device = c: \ a \ path \ to \ my \ folder не будет работать в Windows.

Но, учитывая, что windows path % APPDATA% расширяется до чего-то вроде c: \ a \ path \ to \ my \ folder вы можете перефразировать его как / host_mnt / c / a / path / to / my / folder и использовать это для device :

docker volume create --name my_test_volume --opt type=none --opt device=device=/host_mnt/c/a/path/to/my/folder --opt o=bind

Для других это предполагает, что c: сделан доступным в настройках docker (Ресурсы / Общий доступ к файлам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...