Контейнер Docker не может скопировать файл в том - PullRequest
1 голос
/ 08 марта 2019

Я довольно новичок в Docker, поэтому я могу сделать что-то действительно не так

Мне нужно поделиться некоторыми файлами между контейнерами Docker, используя файл компоновки Docker

Я уже создалтакой том

docker volume create shared

После этого я могу проверить созданный том

docker volume inspect shared
[
    {
        "CreatedAt": "2019-03-08T14:54:57-05:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/shared/_data",
        "Name": "shared",
        "Options": {},
        "Scope": "local"
    }
]

Мой файл docker-compose.yaml выглядит следующим образом

version: '3.1'

services:
  service1:
    build:
      context: Service1
      dockerfile: Dockerfile
    restart: always
    container_name: server1-server
    volumes:
       - shared:/shared

  service2:
    build:
      context: Service2
      dockerfile: Dockerfile
    restart: always
    container_name: server2-server
    volumes:
       - shared:/shared

volumes:
  shared:
     external: true

ИDockerfile выглядит так (только для целей тестирования)

FROM microsoft/dotnet:2.2-sdk AS build-env

RUN echo "test" > /shared/test.info

Когда я запускаю команду docker-compose up, я получаю эту ошибку

/bin/sh: 1: cannot create /shared/test.info: Directory nonexistent

Если я изменяю Dockerfile на этот

FROM microsoft/dotnet:2.2-sdk AS build-env

WORKDIR /app

COPY *.csproj ./
RUN cp *.csproj /shared/ 

Я получаю эту ошибку

cp: cannot create regular file '/shared/': Not a directory

Есть идеи, как этого добиться?

1 Ответ

2 голосов
/ 09 марта 2019

Dockerfile содержит инструкции по созданию изображения.После создания образа его можно запустить как контейнер.

При запуске контейнеров присоединяется том.

Поэтому нет смысла использовать инструкции Dockerfile для копирования файла в файл.том во время создания образа.

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

...