Как добавить том для папки App_Data, используя docker-compose.override.yml? - PullRequest
0 голосов
/ 18 сентября 2018

Я экспериментирую с поддержкой docker Visual Studio и хочу добавить монтирование тома для C:\inetpub\wwwroot\App_Data.

Мой Dockerfile выглядит следующим образом:

FROM microsoft/aspnet:4.7.1-windowsservercore-1709
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .

Мой *Файл 1009 * выглядит следующим образом:

версия: '3.4'

services:
  my.app:
    image: ${DOCKER_REGISTRY}myapp
    build:
      context: .\My.App
      dockerfile: Dockerfile

Теперь я попробовал почти все варианты указания volumes в моем файле docker-compose.override.yml, включая:

version: '3.4'

services:
  my.app:
    volumes:
      - "C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

services:
  my.app:
    volumes:
      - "C:\\temp\\dockerappdata1":"C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

services:
  my.app:
    volumes:
      - type: volume
        source: "app_data"
        target: "C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat
volumes:
  app_data:

Но во всех случаях я не могу запустить проект, и он сообщает либо о какой-то проблеме конфигурации с compose, либо о проблеме при запуске контейнера с сообщением супер-бесполезного:

encountered an error during Start: failure in a Windows system call: The compute system exited unexpectedly.

Какой правильный синтаксис?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018
version: '3.4'

services:
  my.app:
    volumes:
      - "C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

services:
  my.app:
    volumes:
      - "C:\\temp\\dockerappdata1":"C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

services:
  my.app:
    volumes:
      - type: volume
        source: "app_data"
        target: "C:\\inetpub\\wwwroot\\App_Data"
    ports:
      - "80"
networks:
  default:
    external:
      name: nat
volumes:
  app_data:

Проблема, я думаю здесь, заключается в том, что вы пытаетесь смонтировать каталог, который уже существует.

0 голосов
/ 01 октября 2018

Если я правильно понимаю ваш вопрос, вы бы хотели смонтировать том «C: \ inetpub \ wwwroot \ App_Data» в контейнер, правильно?

Если это так, вот что вы должны добавить вфайл yaml:

services:
  my.app:
    volumes:
      - C:\\inetpub\\wwwroot\\App_Data:C:\\temp\\dockerappdata1
     # Syntax is HOST_PATH:CONTAINER_PATH:[ro/rw] (the access mode is optional)
    ports:
      - "80"

Дополнительная информация о синтаксисе: https://docs.docker.com/compose/compose-file/#short-syntax-3

...