我正在跟随testdriven.io上的Flask/Docker教程。在第一部分的第三个部分Docker Config中,我按照说明将项目目录作为开发环境下Docker容器的卷来加载。不幸的是,按照教程的步骤使用docker-compose不能正确加载卷,而容器内的目录为空。
下面是该容器的。
所涉及的目录是用户服务容器内的/usr/src/app目录。当我执行以下操作时:
当我在容器中使用
我在stackoverflow上看到了一些类似标题的帖子,但是很遗憾,没有一种解决方案能够解决我的问题。我尝试将本地卷路径从相对路径更改为绝对路径,但结果没有任何区别。提前感谢任何能够帮助我的人。
编辑:
在容器上运行
下面是该容器的。
FROM python:3.6.1
# set working directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add requirements (to leverage Docker cache)
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.yml 文件。
version: '2.1'
services:
users-service:
container_name: users-service
build: .
volumes:
- '.:/usr/src/app'
ports:
- 5001:5000 # expose ports - HOST:CONTAINER
所涉及的目录是用户服务容器内的/usr/src/app目录。当我执行以下操作时:
>> docker-compose build
>> docker-compose up -d
>> docker-compose run users-service bash
当我在容器中使用
ls
命令时,我处于正确的目录(/usr/src/app),但是该目录为空。这也导致CMD失败,因为它找不到位于项目根目录中的manage.py文件。我在stackoverflow上看到了一些类似标题的帖子,但是很遗憾,没有一种解决方案能够解决我的问题。我尝试将本地卷路径从相对路径更改为绝对路径,但结果没有任何区别。提前感谢任何能够帮助我的人。
编辑:
在容器上运行
docker inspect
命令后,以下是在Mounts
和Config
- Volume
下找到的信息:"Mounts": [
{
"Type": "bind",
"Source": "/home/jonathan/projects/flask-microservices-users",
"Destination": "/usr/src/app",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
...
"Config": {
...
"Image": "flaskmicroservicesusers_users-service",
"Volumes": {
"/usr/src/app": {}
},
"WorkingDir": "/usr/src/app",
...
me@ubuntu:~/project$ ls Dockerfile manage.py README.md docker-compose.yml project requirements.txt
- Jonnyishmandocker inspect
的结果。 - Jonnyishman~/project
中使用了ls,但是inspect中有/home/jonathan/projects/
,那里有一个__s__,如果缺少目录,docker会立即在主机上创建它们... - user3012759