在Windows中使用docker-compose创建挂载源路径时出错

时间:2019-10-02 03:15:58

标签: docker docker-compose

我正在尝试通过对每个容器进行泊坞并使用docker-compose来对我的React-Flask应用进行泊坞。

每个应用的Dockerfile如下:

反应-前端

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"]

烧瓶-后端

#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 builddocker 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吗?可能是什么问题?预先感谢。

3 个答案:

答案 0 :(得分:1)

我删除了与docker共享的文件夹并重新创建了一个具有相同名称的文件夹后,看到了这一点。我认为这删除了权限。要解决它,我:

  • 在docker设置中取消共享文件夹
  • 重新启动docker
  • Ran Docker容器修剪
  • 运行docker-compose构建
  • 跑docker-compose up。

答案 1 :(得分:1)

对我而言,唯一可行的方法是重启Docker守护进程

答案 2 :(得分:0)

检查这是否与docker/for-win issue 1560

有关
  

我有同样的问题。我能够通过运行来解决它:

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

然后重新启动docker,并运行:

docker-compose up -d --build
     

我尝试了这些相同的步骤,而没有重新启动docker,但是重新启动计算机,但这不能解决问题。
  为我解决了这个问题的是删除带有错误的卷,重新启动docker,然后再次进行构建。

其他原因:

  

在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删除所有停止的容器。这个问题已经解决了。

  •