Ошибка при создании исходного пути монтирования при использовании docker-compose в Windows - PullRequest
2 голосов
/ 02 октября 2019

Я пытаюсь докернизировать мое приложение React-Flask, докеризируя каждое из них и используя docker-compose, чтобы собрать их вместе.

Здесь Dockerfile s для каждого приложения выглядят так:

React - Frontend

FROM node:latest

WORKDIR /frontend/

ENV PATH /frontend/node_modules/.bin:$PATH

COPY package.json /frontend/package.json
COPY . /frontend/
RUN npm install --silent
RUN npm install react-scripts@3.0.1 -g --silent

CMD ["npm", "run", "start"]

Flask - Backend

#Using ubuntu as our base
FROM ubuntu:latest

#Install commands in ubuntu, including pymongo for DB handling
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN python -m pip install pymongo[srv]

#Unsure of COPY command's purpose, but WORKDIR points to /backend
COPY . /backend
WORKDIR /backend/

RUN pip install -r requirements.txt

#Run order for starting up the backend
ENTRYPOINT ["python"]
CMD ["app.py"]

Каждый из них отлично работает, когда я просто использую docker build и docker up. Я проверил, что они работают нормально, когда они построены и работают независимо. Однако, когда я docker-compose up docker-compose.yml, который выглядит как

# Docker Compose
version: '3.7'

services:
  frontend:
    container_name: frontend
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - '.:/frontend'
      - '/frontend/node_modules'
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    volumes:
       - .:/code

, выдает ошибку ниже

Starting frontend                ... error
Starting dashboard_backend_1 ...

ERROR: for frontend  Cannot start service sit-frontend: error while creating mount source path '/host_mnt/c/Users/myid/DeskStarting dashboard_backend_1 ... error

ERROR: for dashboard_backend_1  Cannot start service backend: error while creating mount source path '/host_mnt/c/Users/myid/Desktop/dashboard': mkdir /host_mnt/c: file exists

ERROR: for frontend  Cannot start service frontend: error while creating mount source path '/host_mnt/c/Users/myid/Desktop/dashboard': mkdir /host_mnt/c: file exists

ERROR: for backend  Cannot start service backend: error while creating mount source path '/host_mnt/c/Users/myid/Desktop/dashboard': mkdir /host_mnt/c: file exists
ERROR: Encountered errors while bringing up the project.

Это произошло из-за того, что я использую Windows? В чем может быть проблема? Заранее спасибо.

1 Ответ

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

Проверьте, связано ли это с Docker / for-win Issue 1560

У меня была такая же проблема. Я смог решить ее, выполнив:

docker volume rm -f [name of docker volume with error]

Затем перезапустив докер и запустив:

docker-compose up -d --build

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

Другая причина:

В Windows это может быть связано с изменением пароля пользователя. Снимите флажок, чтобы прекратить общий доступ к диску, а затем позвольте Docker определить, что вы пытаетесь смонтировать диск и поделиться им.

https://user-images.githubusercontent.com/470472/36745728-49101172-1ba5-11e8-94da-1386cfba9702.png

Также упоминается:

  • Я только что побежал docker-compose down, а затем docker-compose up. Работал для меня.

  • Я пытался с docker container prune, затем нажмите y, чтобы удалить все остановленные контейнеры. Эта проблема исчезла.

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