gpt4 book ai didi

Django + Docker + SQLite3 如何将数据库挂载到容器中?

转载 作者:行者123 更新时间:2023-12-03 16:25:42 25 4
gpt4 key购买 nike

我的本地主机上有带有某种表的 sqlite 数据库,我想将该数据库复制并粘贴到在 docker 上运行的服务器上。我创建了这样的路径:

enter image description here

数据库数据:我想在我的 django 项目中运行我的 sqlite 数据库。
网址:这是我的整个 django 项目

在我的 docker-compose.yml 我写了这个卷:

version: "3"

services:

web:
build: ./web/
ports:
- "8001:8001"
volumes:
- ./web:/code
- /home/cosmo/db_data/db.sqlite3:/code/db.sqlite3
command: python manage.py runserver 0.0.0.0:8001

所以我认为 docker 将在我的 db_data 中获取数据库,并将在我的 web 文件夹中创建卷(在我的项目中。我的本地主机上有数据库,所以这不会是问题。)但我会在这里粘贴 设置.py :
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

因此,当我在 db_data 中打开我的 db.sqlite3 时,每个表和内容都在那里,但是当我运行容器时,我的项目文件夹(web)中的 db.sqlite3 是空的。

当我将运行 docker ps 命令时,没有数据库容器可能这是我不知道的问题。我只有:

enter image description here

红色圆圈中是我的 django 容器。因此,何时我将运行我的服务器并尝试从数据库中登录每个帐户是未知的。所以我认为该容器适用于我项目中的那个空数据库。请问有人有什么解决办法吗?谢谢。

最佳答案

  • BASE_DIR 将是设置文件的文件夹,通常位于根目录下的文件夹中。很可能您有目录问题。如果您可以将文件直接移动到与 settings.py 相同的文件夹中,您至少可以消除这些变量。
  • 你不会看到一个容器,它只是绑定(bind)一个卷,你也应该让它独一无二,所以不要像你有 /code/db.sqlite3 那样嵌套它但把它放在它自己的文件夹中,然后你可以在你的设置文件中引用它。您可以使用 docker volume ls 查看卷列表(假设 Docker 1.8+)
  • 关于Django + Docker + SQLite3 如何将数据库挂载到容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49408290/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com