mongoimport в docker-compose выдает ошибку «Не удается запустить службу» - PullRequest
0 голосов
/ 07 октября 2019

У меня есть приложение, которое состоит из React, Flask и MongoDB в качестве базы данных.

Я пытался импортировать (mongoimport) некоторые файлы json в базу данных MongoDB, когда я docker-compose build.

В своем корневом каталоге я создал каталог с именем mongo-seed и поместил все файлы json, которые пытался импортировать, в базу данных вместе с import.sh, который выглядит следующим образом:

mongoimport --host <my_host_name> --db <my_db_name> --collection profiles --type json --file /mongo-seed/profiles.json --jsonArray
mongoimport --host <my_host_name> --db <my_db_name> --collection releases --type json --file /mongo-seed/releases.json --jsonArray
mongoimport --host <my_host_name> --db <my_db_name> --collection employees --type json --file /mongo-seed/employees.json --jsonArray  

и мой docker-compose.yml выглядит так:

# Docker Compose
version: '3.7'

services:
  frontend:
    container_name: frontend
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - "3000:80"
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    links:
      - db
  db:
    image: mongo:latest
    ports:
      - "27017:27017"
  mongo-seed:
    image: mongo:latest
    links:
      - "db"
    volumes:
      - ./mongo-seed:/mongo-seed
    command:
     /mongo-seed/import.sh

Однако, когда я docker-compose build, а затем docker-compose up, я получаю

ERROR: for mongo-seed_1  Cannot start service mongo-seed: error while creating mount source path '/host_mnt/c/Users/<...>/Desktop/<root>/mongo-seed': mkdir /host_mnt/c: file exists

ERROR: for mongo-seed  Cannot start service mongo-seed: error while creating mount source path '/host_mnt/c/Users/<...>/Desktop/<root>/mongo-seed': mkdir /host_mnt/c: file exists

Я что-то упустил?

1 Ответ

0 голосов
/ 08 октября 2019

Это известная проблема / неприятность в версии Docker для Windows. Есть несколько вещей, которые вы можете попробовать.

  1. Сброс учетных данных: даже если ваш пароль не изменился, пользователи сообщили, что это работает для них. В меню «Настройки»> «Общие диски» внизу есть кнопка для сброса.
  2. Если вы не возражаете против удаления любых существующих томов, вы можете попробовать docker-compose up -V <any other options you specify such as -d>. Это будет воссоздавать анонимные тома вместо того, чтобы восстанавливать старые.
  3. Простой docker volume prune также работал для некоторых, но это удалит все неиспользуемые тома и не рекомендуется, потому что некоторые из них могут иметь данные, которые могут вам понадобитьсябудет исправлено позже.

Все вышеперечисленное и многое другое упоминается в этом обсуждении . Обсуждение также включает в себя это полезное руководство по , как использовать каталог с Windows 'Docker .

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