我想用docker-compose创建2个Docker容器。 1个用于DB(Mongo),1个用于Web(Django)。 这是我的文件
docker-compose.yml
version: '3'
services:
db:
image: mongo
command: mongod
web:
build: code/
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
代码/ Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY cleverInvestWeb/ /code/
在目录 code / cleverInvestWeb / 中是我来自Django的manage.py文件。
当我运行docker-compose up
时,会引发以下错误:
web_1 | python: can't open file 'manage.py': [Errno 2] No such file or directory
当我通过Docker本身使用docker exec -it dockerdiplom_web bash
启动容器并执行ls
时,它将显示manage.py
文件。
您是否知道为什么docker-compose启动时找不到我的文件?
答案 0 :(得分:1)
Dockerfile和docker-compose中的目录结构似乎令人困惑。另一件事很奇怪,就是您可以在docker exec
之后看到文件。
您将代码复制到Dockerfile中的COPY cleverInvestWeb/ /code/
,然后在Docker-compose中将卷挂载到.:/code
,以便一切都将覆盖/code
位置上的现有映像。
我假设您的python文件位于本地目录cleverInvestWeb
中,因此docker-compose boot up将覆盖现有的映像代码,并且您的文件更新位置将为code/cleverInvestWeb/manage.py
或/code/manage.py
>
要调试:
command: tail -f /dev/null
在docker-compose中设置此命令,并使用docker exec
答案 1 :(得分:0)
将命令更改为
from sqlalchemy.dialects.postgresql import JSONB
class Customer(Base):
__tablename__ = 'customers'
uuid = database.Column(database.String, primary_key=True)
activity_type = database.Column(database.String)
activity = database.Column(JSONB)
答案 2 :(得分:0)
这是 Django 初学者常见的错误
docker 文件'docker-compose.yml' 配置(在这个请求的开头显示)是正常的...除了调用 manage.py 文件时缺少 django 项目文件夹!
这条线应该是:
关于名为“/code”的卷的说明 卷“/code”正在使用 Docker 项目文件夹的根目录构建您的应用程序:
/home/user/Documents/youDockerProjectFolder = (代码)
在“/home/user/Documents/youDockerProjectFolder”里面你应该找到django项目文件夹:yourDjangoProjectFolder/
在该文件夹中,您将找到 manage.py... 因此,必须使用 yourDjangoProjectFolder/manage.py 来调用 manage.py< /p>
更多但对这个解决方案不重要 在 Docker 项目文件夹中找到另一个重要文件 yourDjangoProjectFolder/youDjangoProjectFolder/settings.py