我是docker的新手,我正在尝试在docker中主持一个django项目。我尝试使用here的教程,但是我没有使用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有人能帮我吗?谢谢
发布于 2017-09-29 10:19:31
您尚未在sqlite映像中装载任何数据库。sqlite存储库的readme要求将数据库挂载到容器内部的/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发布于 2017-09-29 16:05:58
Sqlite是python/django直接写入的本地数据库文件,而不是可以连接到的远程数据库服务器。
对于postgres的
DATABASES设置中应该有'HOST': 'db';对于sqlite,你应该在你的DATABASES设置中有'NAME': 'localfilename.db'。sqlite支持是直接构建到python中的,因此您不需要任何额外的包。在您的示例中,这意味着您可以从docker-compose.yml中删除整个db服务,只留下web服务。
注意:如果你在docker中使用sqlite,你应该确保实际的数据库文件存储在卷上的某个地方,否则当docker停止时文件就会丢失。在本例中,您很好,因为您已经在docker-compose.yml中将当前目录挂载为/code。db文件将在docker中为/code/localfilename.db,在本地开发目录中为localfilename.db。
作为参考,您的settings.py应该包含如下内容:
DATABASES = {
'default': {'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'localfilename.db'},
}https://stackoverflow.com/questions/46480587
复制相似问题