Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker+Django+MySQL-非本机分区表列表的末尾_Python_Mysql_Django_Database_Docker - Fatal编程技术网

Python Docker+Django+MySQL-非本机分区表列表的末尾

Python Docker+Django+MySQL-非本机分区表列表的末尾,python,mysql,django,database,docker,Python,Mysql,Django,Database,Docker,我试图将Docker与Django和MySQL数据库一起使用,但不幸的是,在Docker编写过程中,它在非本机分区表列表的末尾停止,并且我的服务器没有启动。当我在没有Docker的情况下使用我的应用程序时,它会工作。有什么问题吗 My docker-compose.yml: Dockerfile: settings.py: 在我看来,我的问题可能与目录的结构有关。也就是说,它看起来是这样的: `DockerContainer`: - docker-compose.yml - Dockerfile

我试图将Docker与Django和MySQL数据库一起使用,但不幸的是,在Docker编写过程中,它在非本机分区表列表的末尾停止,并且我的服务器没有启动。当我在没有Docker的情况下使用我的应用程序时,它会工作。有什么问题吗

My docker-compose.yml:

Dockerfile:

settings.py:

在我看来,我的问题可能与目录的结构有关。也就是说,它看起来是这样的:

`DockerContainer`:
- docker-compose.yml
- Dockerfile
- requirements.txt
- ProjectDirectory
在ProjectDirectory中,我有virtualenv和Project:

- bin
- include
- lib
- pip-selfcheck.json
- Project
在项目中,我有git存储库、后端和前端:

- backendFolder
- frontendFolder
在backendFolder中:

在后端项目中:


我认为您的撰写文件应该如下所示:

version: '2'
services:
  db:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: Somepassword
        MYSQL_DATABASE: pri
        MYSQL_USER: root
        MYSQL_PASSWORD: strongpassword
    ports:
        - "3306:3306"
  web:
     build: .
     command: python manage.py runserver 0.0.0.0:8000
     volumes:
        - .:/code
     ports:
        - "8000:8000"
     depends_on:
        - db
     links:
        - db
像这样的设置

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pri',
        'USER': 'root',
        'PASSWORD': 'strongpassword',
        'HOST': 'db',
    }
}

列表结束。。。是来自MySQL的信息性消息-它列出了使用不推荐的分区引擎的表,即使没有,也以该消息结尾。可能是这样,但若您看到列表末尾的消息,那个么它已经完成了

[Note] Beginning of list of non-natively partitioned tables
[Note] End of list of non-natively partitioned tables
这不应该引起任何问题

仅供参考,以下是您检查MySQL服务器是否已安装并正在运行的方法:

从docker compose up-d开始。使用-d意味着您的容器将从终端分离,在后台运行。 检查所有服务是否都已启动docker compose ps。如果其中任何服务显示类似于出口1的内容,则该特定服务未运行。 检查MySQL服务器。运行docker compose exec mysql-uroot-pstrong password-e'选择版本;'脉波重复间隔。 现在,真正失败的是你的Django应用程序。根据对邻近答案dockerpri_web_1的评论(代码为2),会发生运行服务器进程死亡的情况。但是,我们不知道为什么会这样,因为您的邮件中没有足够的信息。我不认为它和MySQL有关,尽管-Django应该启动,即使数据库关闭。它将只响应500个错误,因为它将无法连接

我的建议是:

正如所建议的,升级到Compose版本2在另一个答案中有一个例子——这很好。如果您不打算从主机访问MySQL,可以考虑从MySQL服务中删除端口:3306:3306。这样,如果在3306XAMPP或其他任何版本上还有其他内容,就不会发生冲突

停止一切。码头工人安静下来。使用docker ps检查端口3306或8000,确保没有集装箱会干扰

在后台运行MySQL:docker编写up-d MySQL。等待几秒钟,检查docker compose ps是否仍然有效,docker compose ps应该为dockerpri_mysql_1显示

现在,在Django容器中启动一个shell:docker compose run-rm-serviceports web/bin/bash。在那里运行python manage.py check或python manage.py runserver 0.0.0.0:8000。现在,希望您只获得相关的错误消息,这样您就能够修复问题。如果runserver会悄无声息地退出,这是一个坏兆头-希望您的情况会更简单

使用Exit或Ctrl+D退出-容器将自动为您清理-rm标志会处理此问题


您的迁移在哪里?我不确定它们应该在哪里?您是如何从djago连接到数据库的,您的数据库设置部分有什么?我已经在帖子中添加了我的数据库设置。它不是127.0.0.1,而是db,因为它位于您命名为“db”的另一个容器中。docker compose up返回错误:yaml.parser.ParserError:在解析./docker-compose.yml第4行第3列中的块映射时,应在./docker-compose.yml第10行第4列中找到,可能存在seom缩进错误,检查它们我在两个编辑器中都试过了,但还是一样,它在你的电脑上工作吗?端口不应该与环境处于同一级别吗?不,端口应该与环境处于同一级别,所以现在我在文件“/docker compose.yml”中找到了服务,服务必须是映射,而不是非非类型。我已经更新了第一篇文章。我已经描述了我将要实现的目标。
-backendProject
- my project with `manage.py` etc.
version: '2'
services:
  db:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: Somepassword
        MYSQL_DATABASE: pri
        MYSQL_USER: root
        MYSQL_PASSWORD: strongpassword
    ports:
        - "3306:3306"
  web:
     build: .
     command: python manage.py runserver 0.0.0.0:8000
     volumes:
        - .:/code
     ports:
        - "8000:8000"
     depends_on:
        - db
     links:
        - db
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pri',
        'USER': 'root',
        'PASSWORD': 'strongpassword',
        'HOST': 'db',
    }
}
[Note] Beginning of list of non-natively partitioned tables
[Note] End of list of non-natively partitioned tables