Docker том очищает папку в контейнере на windows 10 - PullRequest
0 голосов
/ 04 апреля 2020

Я создал простой docker с nodejs сервером.

FROM node:12.16.1-alpine
WORKDIR /usr/src

COPY ./app/package.json .
RUN yarn

COPY ./app ./app

Это прекрасно работает, и сервис работает.

Теперь я пытаюсь запустить docker с томом для локальной разработки с использованием docker compose:

version: "3.4"
services:
    web:
        image: my-node-app
        volumes:
            - ./app:/usr/src/app
        ports:
            - "8080:8080"
        command: ["yarn", "start"]        
        build:
            context: .
            dockerfile: ./app/Dockerfile

Это моя структура папок на хосте:

enter image description here

Сервис работает без объема. Когда я добавляю том, приложение / usr / src / пусто (даже если оно заполнено, как показано в структуре папок).

Проверка контейнера docker Я получаю следующую конфигурацию монтирования:

"Mounts": [
        {
            "Type": "bind",
            "Source": "/d/development/dockerNCo/app",
            "Destination": "/usr/src/app",
            "Mode": "rw",
            "RW": true,
            "Propagation": "rprivate"
        }
    ],

Но, тем не менее, при просмотре папки через оболочку vscode она отображается пустой.

Кроме того, команда: docker volume ls показывает пустой список.

I запускаю docker 18.09.3 на windows 10.

Что-то не так с конфигурацией? Как это должно работать?

1 Ответ

0 голосов
/ 04 апреля 2020

Добавление тома к вашей службе приведет к удалению всех файлов /usr/src/app и подключению содержимого ./app с вашего хост-компьютера. Это также означает, что все файлы, созданные при запуске yarn в образе docker, будут потеряны, поскольку они существуют только в образе docker. Это ожидаемое поведение добавления тома в docker, и оно не является ошибкой.

        volumes:
            - ./app:/usr/src/app
  • Обычно и для разработки Envs вам вообще не нужен том.
  • Если вы хотите видеть файлы на вашем хосте, вам нужно запустить команду yarn из docker -compose (вы можете использовать точку входа)
...