我正在运行简单的Docker-compose示例here
这是Dockerfile:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
这是docker-compose.yml:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
当我尝试使用docker-compose启动示例时,它会让我关注:
alex@universe:~/projects/testcompose$ docker-compose up
testcompose_db_1 is up-to-date
Recreating testcompose_web_1
Attaching to testcompose_db_1, testcompose_web_1
web_1 | python: can't open file 'manage.py': [Errno 2] No such file or directory
db_1 | The files belonging to this da...
可能教程不是最新的,所以如果你知道答案,请在这里写下来。
答案 0 :(得分:2)
如果您正在使用docker-machine
或Docker Toolbox,则可能是因为该项目不在/Users
目录下。只有该目录可用作VM中的共享文件夹。
您可以从配置中删除volumes:
,或将另一个共享文件夹添加到Virtualbox。
答案 1 :(得分:1)
是的,正确生成了项目文件结构。
Django总是有一个csv_data = "col1,col2\r\n1,1\r\n2,2"
sql = """
COPY my_table (col1, col2)
FROM STDIN
CSV HEADER
"""
steam = SQL.stream(Repo, sql)
Repo.transaction(fn -> Enum.into([csv_data], stream) end)
文件结构。
要使其与docker-compose一起使用,您只需将以下文件移至my-project-folder/my-site/my-site
my-project-folder/my-site/
Dockerfile
docker-compose.yml
requirements.txt
已经包含my-project-folder/my-site/
个文件(如果不是这样的话就会出错)
此时请确保manage.py
仅包含
<{1}}文件夹,没有别的。
一切设置正确后,只需向上移动my-project-folder/
执行命令my-site/
它将构建所需的一切。
第二次执行命令my-project-folder/my-site/my-site
然后就可以了。
别忘了检查允许的主机并添加&#39; 0.0.0.0&#39;如果需要,请在docker-compose up
文件上。
全部。
答案 2 :(得分:1)
我以相同的错误消息到达这里,原来我只是忘记在以下命令的末尾添加点.
:
docker-compose run web django-admin.py startproject composeexample .
答案 3 :(得分:1)
我在学习这个 docker 基础教程时也遇到了同样的问题 https://docs.docker.com/compose/django/
所以,基本上我处于同一阶段,而且我也是 docker 的菜鸟。我的方法是首先我使用以下命令来识别我的图像目录中的内容,确保您的 django 项目在该目录中可用
docker run -it container_name sh
之后,当您运行 docker-compose up 命令时,您将收到此错误
<块引用>web_1 | python:无法打开文件“/proto/manage.py”:[Errno 2] 否 这样的文件或目录
因此,基本上 docker 正在执行来自您的 Dockerfile 的指令,并在不包含您的 manage.py 文件的代码文件夹中执行您的 python manage.py runserver 命令。
所以,添加这一行,它将导航到包含 manage.py 文件的文件夹
CMD . /code/composeexample/
现在使用
再次构建您的项目docker-compose build
现在运行下面的命令,你就可以开始了
docker-compose up
答案 4 :(得分:0)
我正在使用创建 virtualenv 的 pipenv, 我的问题是我忘记使用
RUN pipenv shell
启用 virtualenv。
但是在容器中使用 pipenv shell
会产生一些问题
所以解决方案是使用 --system
选项和 pipenv install
命令
RUN pipenv install --system
这会导致包安装在容器本身上,而不是安装在容器中的 virtualenv 上。