Django – Mysql数据库不是在Docker中创建的

我在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相关的项目相关数据库.

你能告诉我缺少什么吗?如果未创建数据库,则应用迁移的位置?

提前致谢.

解决方法:

我不确定你的意思是“我登录MysqL image shell但没找到mywebsite数据库

您已成功迁移数据库,这意味着数据库连接有效且正常工作.
在您的docker-compose.yml文件中,端口映射如下所示,’33060:3306′,这意味着db的端口3306被映射到主机端口33060.所以,这可能是问题(这不是问题,类型错字)

如何检查数据库内容

方法-1:检查Web容器的django-shell
1.运行docker-compose up
2.在同一路径中打开一个新终端并运行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.通过docker exec -it 795093357f78 bash命令访问web容器,其中795093357f78是相应的容器ID
现在你在容器内.然后,运行命令python manage.py dbshel​​l.现在你将进入mywebsite的MysqL shell(Screenshot)
5.运行命令show tables;.它将显示mywebsite DB中的所有表

方法-2:通过db容器检查
1.重复上一节中的步骤1和2
2.通过docker exec -it 4ae48f291e34 bash进入db容器
3.现在你将进入MysqL的bash终端.运行以下命令MysqL -u root -p并在提示时输入密码
4.现在你在MysqL服务器上.运行命令,显示数据库;.这将显示服务器中的所有数据库.

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...