docker不在运行Django服务器
我是新来的docker工人,我正在试图在docker工作一个Django项目。 我试图从这里按照教程,而不是postgresql,我使用sqlite。 我试图运行docker-compose up
但docker被卡在这个:
我的Dockerfile:
FROM python:3.6 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/
和我的docker-compose.yml:
version: '3' services: db: image: spartakode/sqlite3:latest web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db
谁能帮我这个? 谢谢
你还没有安装任何数据库内的SQLite图像。 sqlite仓库的自述文件说,将数据库安装在容器内的/db/db.db
。
您可以通过在docker-compose.yml
文件中包含卷来完成此操作。 你的新文件应该是这样的:
version: '3' services: db: image: spartakode/sqlite3:latest volumes: - ./database.db:/db/db.db web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db
Sqlite是python / django直接写入的本地数据库文件,而不是可以连接到的远程数据库服务器。
-
对于postgres,你会使用一个单独的postgres docker,在你的
DATABASES
设置中你会有'HOST': 'db'
。 -
对于sqlite,你只需要在你的
DATABASES
设置中有'NAME': 'localfilename.db'
。 SQLite的支持是正确的build立到python,所以你不需要任何额外的软件包。你的情况,这意味着你可以从
docker-compose.yml
删除整个db
服务,只留下web
服务。
注意:如果你在docker中使用sqlite,你应该确保实际的数据库文件存储在一个卷的某个地方,否则当你的docker停止的时候这个文件会丢失。 在你的情况下,你很好,因为你已经把当前目录挂载在你docker-compose.yml
/code
。 数据库文件将在你的/code/localfilename.db
里面是/code/localfilename.db
在你的本地开发目录中是localfilename.db
。
作为参考,你的settings.py
应该包括这样的东西:
DATABASES = { 'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'localfilename.db'}, }
- sendPeersProposal – Promise被拒绝:Error:REQUEST_TIMEOUT,Hyperledger Fabric(balance-transfer example)
- 运行js代码这就是域名locking
- 在Google App Engine中使用Docker进行组合
- 由于EAI_AGAIN,电子邮件不在Docker容器内使用Nodemailer发送
- 在Docker容器中的Pycharm 5远程Python解释器:非零退出代码
- Mongodb Docker – 创build初始用户并设置初始结构
- 在使用docker-compose和boot2docker执行命令之前装入卷
- Docker tomcat通过dockerfile编辑configuration文件
- Docker-compose检查mysql连接是否准备就绪
- Docker撰写,反应JS应用程序构build,以及如何传递给第一个nginx
- 独立的开发和生产实例和数据库