我的shostite数据库在我的localhost上有某种表格,我想将该数据库复制并粘贴到我在docker上运行的服务器上。我创建了这样的路径:
db_data:我想在我的django项目中运行我的sqlite数据库。 web:我的整个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文件夹中创建卷(在我的项目中。我在我的localhost上有数据库所以它不会有问题。)但是我会在这里粘贴设置的.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命令时,没有数据库容器可能这是我不知道的问题。我只有那里:
红色圆圈中的是我的django容器。因此,当我将运行我的服务器并尝试从数据库登录每个帐户是未知的。所以我认为容器在我的项目中使用那个空数据库。有人请问有什么解决方案吗?感谢。
答案 0 :(得分:3)
/code/db.sqlite3
那样嵌套它,而是把它放在自己的文件夹中,然后你可以在你的设置文件。您可以使用 docker volume ls
查看卷列表(假设 Docker 1.8+)