首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker未运行django服务器

docker未运行django服务器
EN

Stack Overflow用户
提问于 2017-09-29 09:45:22
回答 2查看 1.1K关注 0票数 2

我是docker的新手,我正在尝试在docker中主持一个django项目。我尝试使用here的教程,但是我没有使用postgresql,而是使用sqlite。我试着运行docker-compose up,但是docker被困在这个地方:

我的Dockerfile:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

有人能帮我吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-09-29 10:19:31

您尚未在sqlite映像中装载任何数据库。sqlite存储库的readme要求将数据库挂载到容器内部的/db/db.db

您可以通过在docker-compose.yml文件中包含卷来完成此操作。新文件应如下所示:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2017-09-29 16:05:58

Sqlite是python/django直接写入的本地数据库文件,而不是可以连接到的远程数据库服务器。

对于postgres的

  • ,你应该使用一个单独的postgres docker,并且在你的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应该包含如下内容:

代码语言:javascript
复制
DATABASES = {
    'default': {'ENGINE': 'django.db.backends.sqlite3',
                'NAME': 'localfilename.db'},
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46480587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档