当前位置: 首页 > 知识库问答 >
问题:

Django-MySQL数据库不是在Docker中创建的

盛嘉
2023-03-14

我在docker容器中设置了一个django项目,每件事都按照预期工作,只是我没有在mysql映像中找到项目数据库。

DockerFile

FROM python:3

RUN mkdir /django-website
WORKDIR /django-website
COPY . /django-website
RUN pip install -r requirements.txt

Docker-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

设置.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

你能告诉我缺了什么吗?如果没有创建数据库,迁移应用到了哪里?

提前道谢。

共有1个答案

齐昊苍
2023-03-14

我不太清楚你说的“我登录了mysql映像shell但没有找到My网站数据库”是什么意思

您已成功迁移DB,这意味着DB连接有效且正常工作。在docker-compose.yml文件中,端口映射如下所示,'33060:3306',这意味着DB端口3306映射到主机的端口33060。所以,这可能是问题所在(这不是问题,是打字)

方法1:通过web容器
1的django-shell进行检查。运行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
4。现在你在容器里。然后,运行命令python manage.py dbshell。现在您将处于mywebite(屏幕截图)
5的MYSQL shell中。运行命令show tables;。它将显示我的网站数据库方法-2:通过数据库容器
1进行检查。重复上述部分
2中的步骤1和2。通过Docker exec-it 4AE48F291E34 bash
3进入DB容器。现在您将进入MySQL的bash终端。运行以下commmandmysql-u root-p并在提示符
4时输入密码。现在您在MYSQL服务器中。运行命令show databases;。这将显示服务器中的所有数据库

 类似资料:
  • 我试图在phpmyadmin中为我的服务器构建一个数据库,但是当我完成构建后,我无法使用PHP访问它,并且当我在MySQL中列出数据库时,它也不会显示出来。但当我在mySql中创建数据库时,它会显示在phpmyadmin中。另外,我正在运行phpmyadmin版本4.0.3,页面底部有一条声明说

  • 在MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: 中的内容是可选的。语法说明如下: <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。 IF NOT EXISTS:在创建数据库之前进行判断,只有该

  • 问题内容: 您能帮忙解决这个问题吗? 我正在尝试创建然后使用一个名为TIGER的数据库。 如果我在MySQL中创建数据库并且运行完美,我没有问题。 我想做的是从Java创建它。这样,当首次运行代码时,它将在初始启动过程中创建数据库。如果可能的话,我想用一种干净的方法将其装箱。 有人可以告诉我您实际将代码放置在哪里 这是代码 这是创建数据库的代码 在此先感谢,感谢您的帮助。 因为我是一个长期读者但还

  • 我正在尝试创建一个mysql数据库/模式,如果它还不存在的话。 以下是我尝试过的: docker编写。yml公司 创建数据库 它不起作用。如果架构不存在,使用docker/docker compose创建架构的最佳方式是什么?

  • 主要内容:使用 MySQLi 和 PDO 创建 MySQL 数据库,实例 (MySQLi - 面向对象),实例 (MySQLi Procedural),实例数据库存有一个或多个表。 你需要 CREATE 权限来创建或删除 MySQL 数据库。 使用 MySQLi 和 PDO 创建 MySQL 数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库。 在下面的实例中,创建了一个名为 "myDB" 的数据库: 实例 (MySQLi - 面向对象) <?php $serverna

  • 前面章节介绍了如何登陆连接 MySQL 数据库,连接 MySQL 数据库之后就可以对数据库进行操作了,本小节将介绍如何创建一个属于自己项目的数据库。 1.使用命令行新建一个数据库 1.1 进入 MySQL 首先登陆进入 MySQL 操作界面,命令如下: 命令 : mysql -utest -p; 1.2 查看数据库 登陆成功之后可以使用如下命令查看当前已有数据库: 命令 : SHOW DAT