【发布时间】:2019-07-14 02:44:28
【问题描述】:
我正在学习如何使用 Docker,并尝试使用“使用 Docker、Flask 和 React 的微服务”一书进行练习。
首先,我将自己添加到 docker 和 usermod 组中,以便在没有 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