【问题标题】:Unable to seed initial data in sqlite3 with Django and Docker无法使用 Django 和 Docker 在 sqlite3 中播种初始数据
【发布时间】:2020-12-08 02:54:05
【问题描述】:

更新:

我也在研究,但会继续添加我认为可能有帮助的链接

Migration and Seeding in Django

Providing initial data for models


这是我遇到的错误,因为我无法使用 docker 命令写入我的数据库(您将在下面看到)。这是我的假设。



这是我的文件夹结构。


docker-compose.yml

version: "3"

services:
  django:
    build: ./api
    command: ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
    volumes:
      - ./api:/app
    ports:
      - "8000:8000"
  frontend:
    build: ./frontend
    volumes:
      - ./frontend:/app
      - /app/node_modules
    ports:
      - "3000:3000"

volumes:
  node-modules:

Dockerfile(在 api 文件夹内)

FROM python:3.7.6

WORKDIR /app
COPY requirements.txt /app
RUN pip3 install -r requirements.txt

COPY . .

# Run migrations and load seed data (using SQLite)
RUN python3 manage.py makemigrations
RUN python3 manage.py migrate
RUN python3 manage.py loaddata portal/fixtures/seed.yaml
RUN python3 manage.py loaddata scheduler/fixtures/seed.yaml

EXPOSE 8000
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

已经尝试了我能够搜索的大多数可能的项目,如果有人可以在这里提供帮助,我将不胜感激。

【问题讨论】:

  • volumes: 隐藏了您的镜像构建的所有内容(并且,对于前端容器,还告诉 Docker 使用旧版本的 node_modules 树)。如果删除所有 volumes: 块,效果会更好吗?
  • 是的,我也确实删除了旧卷,但它没有用。它没有初始化和添加数据库中的值。必须按照答案中的建议手动执行此操作,并且有效。

标签: python python-3.x docker docker-compose dockerfile


【解决方案1】:

在 Docker Image CLI 中运行命令

# Run migrations and load seed data (using SQLite)
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py loaddata portal/fixtures/seed.yaml
python3 manage.py loaddata scheduler/fixtures/seed.yaml

按顺序进行。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    相关资源
    最近更新 更多