作者:小妖2502898957 | 来源:互联网 | 2022-12-04 10:21
我在docker容器中设置了一个django项目,并且每个东西都按预期工作,除了我在mysql映像中找不到项目数据库.
Dockerfile
FROM python:3
RUN mkdir /django-website
WORKDIR /django-website
COPY . /django-website
RUN pip install -r requirements.txt
泊坞窗,compose.yml
version: '3'
services:
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=mywebsite
- MYSQL_USER=root
- MYSQL_PASSWORD=root
ports:
- '33060:3306'
volumes:
- /var/lib/mysql
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/django-website
ports:
- '8000:8000'
links:
- db
settings.py
DATABASES = {
'default': {
'ENGINE': "django.db.backends.mysql",
'NAME': "mywebsite",
'USER': "root",
'PASSWORD': "root",
'HOST': 'db',
'PORT': '3306',
}
}
我运行迁移,它工作:
docker-compose run web python manage.py migrate
我创建了超级用户:
docker-compose run web python manage.py createsuperuser
开发服务器正在工作docker-compose up
,网站正在按预期工作,我在mysql映像中导航的问题我没有找到我的项目相关数据库mywebsite
.
你能告诉我缺少什么吗?如果未创建数据库,则应用迁移的位置?
提前致谢.
1> JPG..:
我不确定你的意思是"我登录了mysql image shell但没找到mywebsite数据库"
您已成功迁移数据库,这意味着数据库连接有效且正常工作.
在你的docker-compose.yml
文件,端口映射做过这样的,'33060:3306'
这意味着在db
的port 3306
被映射到主机的port 33060
.所以,这可能是问题(这不是问题,有点typo
)
如何检查数据库内容?
方法1:检查通过django-shell
的web
容器
1.运行
2.在同一路径打开一个新的终端,运行
你会得到类似下面docker-compose up
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
795093357f78 django_1_11_web "python manage.py ru…" 34 minutes ago Up 11 minutes 0.0.0.0:8000->8000/tcp django_1_11_web_1
4ae48f291e34 mysql:5.7 "docker-entrypoint.s…" 34 minutes ago Up 12 minutes 0.0.0.0:33060->3306/tcp django_1_11_db_1
3. web
通过docker exec -it 795093357f78 bash
命令获取容器,其中795093357f78
是相应的容器ID
4.现在您在容器内.然后,运行该命令python manage.py dbshell
.现在你将在MYSQL shell中mywebsite
(截图)
5.运行命令show tables;
.它将显示mywebsite
DB
METHOD-2中的db
所有表格:检查容器
1.重复上面第
2 节中的步骤1和2.进入db
容器
3.现在你将进入MYSQL的bash终端.运行以下命令并在提示符
4 时输入密码.现在您在MYSQL服务器中.运行命令.这将显示服务器中的所有数据库.
docker exec -it 4ae48f291e34 bash
mysql -u root -p
show databases;