【问题标题】:Docker container has no files after copyingDocker容器复制后没有文件
【发布时间】:2019-07-14 02:44:28
【问题描述】:

我正在学习如何使用 Docker,并尝试使用“使用 Docker、Flask 和 React 的微服务”一书进行练习。

首先,我将自己添加到 dockerusermod 组中,以便在没有 sudo 的情况下进行所有操作。它已经工作了,但是当我尝试在 docker-machine 上运行成功构建的映像时,它说没有要运行的文件。

我有一个这样的测试项目:

testdriven-app:
|--users-service: 
|  |--project:
|  |  |--__init__.py
|  |  |--config.py
|  |--Dockerfile-dev
|  |--manage.py
|  |--requirements.txt
|--docker-compose-dev.yml

Dockerfile-开发:

FROM python:3.5.3

# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# add requirements
ADD ./requirements.txt /usr/src/app/requirements.txt

# install requirements
RUN pip install -r requirements.txt

# add app
ADD . /usr/src/app

# run server
CMD python manage.py runserver -h 0.0.0.0 

docker-compose-dev.yml:

version: '3.3'
services:

  users-service:
    container_name: users-service
    build:
      context: ./users-service
      dockerfile: Dockerfile-dev
    volumes:
      - './users-service:/usr/src/app'
    ports:
      - "5001:5000"

[kuimov@ms testdriven-app [testdriven-dev]]$ docker-compose -f docker-compose-dev.yml build
Building users-service
Step 1/7 : FROM python:3.5.3
 ---> 56b15234ac1d
Step 2/7 : RUN mkdir -p /usr/src/app
 ---> Using cache
 ---> 4caa9194035d
Step 3/7 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 3c347fd7446b
Step 4/7 : ADD ./requirements.txt /usr/src/app/requirements.txt
 ---> Using cache
 ---> 417256150884
Step 5/7 : RUN pip install -r requirements.txt
 ---> Using cache
 ---> 5df631263c71
Step 6/7 : ADD . /usr/src/app
 ---> f97cde6e7e00
Step 7/7 : CMD python manage.py runserver -h 0.0.0.0
 ---> Running in 70ea95e36c1e
Removing intermediate container 70ea95e36c1e
 ---> f3d548a00de1

Successfully built f3d548a00de1
Successfully tagged testdriven-app_users-service:latest
[kuimov@ms testdriven-app [testdriven-dev]]$ docker-compose -f docker-compose-dev.yml up
Recreating users-service ... done
Attaching to users-service
users-service    | python: can't open file 'manage.py': [Errno 2] No such file or directory
users-service exited with code 2

我怀疑存在权限问题,因为使用 sudo 构建的同一个容器成功运行,但我很难找到。

【问题讨论】:

  • 您的 volumes: 块几乎隐藏了 Dockerfile 所做的一切;如果你删除它,你实际上会运行构建到图像中的内容。如果你删除它,效果会更好吗?
  • 什么版本的 Docker?你是在 Windows 还是 Mac 上?您将主机上的哪个目录挂载到容器中?您是否已将 Docker 配置为将该驱动器/目录共享到嵌入式 VM 中?
  • 是的,他们做到了!但是如何解释这种行为呢?
  • Docker version 18.09.2, Debian 9, 关于目录的信息你可以在dockerfile中看到(或者我没看懂问题),关于配置的最后一个不清楚
  • 我想我已经完成了,我刚刚更新了 docker-compose,现在它运行没有任何错误。

标签: docker permissions docker-compose


【解决方案1】:

所以,它是 docker-compose 的旧版本。我刚刚升级了它,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2014-03-29
    • 1970-01-01
    • 2021-07-14
    • 2021-12-11
    • 2018-09-10
    相关资源
    最近更新 更多