gpt4 book ai didi

python - Docker + Django + MySQL - 非 native 分区表列表末尾

转载 作者:行者123 更新时间:2023-11-29 18:46:18 24 4
gpt4 key购买 nike

我正在尝试将 Docker 与 Django 和 MySQL 数据库结合使用,但不幸的是在 docker-compose up 期间,它在非 native 分区表列表末尾处停止并且我的服务器没有启动。当我在没有 Docker 的情况下使用我的应用程序时,它可以工作。有什么建议吗?

我的docker-compose.yml:

web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
db:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_USER=root
- MYSQL_DATABASE=pri

Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

settings.py:

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

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

`DockerContainer`:
- docker-compose.yml
- Dockerfile
- requirements.txt
- ProjectDirectory

ProjectDirectory 中,我有 virtualenv 和项目:

- bin
- include
- lib
- pip-selfcheck.json
- Project

项目中我有git存储库、后端和前端:

- backendFolder
- frontendFolder

backendFolder中:

-backendProject

-backendProject中:

- my project with `manage.py` etc.

最佳答案

“列表结束...”是来自 MySQL 的信息性消息 - 它列出了使用已弃用的“分区”引擎的表(即使没有)并以此消息结尾。可能take long time for MySQL to start ,但如果您看到“列表结束”消息,则说明已经完成。

[Note] Beginning of list of non-natively partitioned tables
[Note] End of list of non-natively partitioned tables

这不会导致任何问题。

仅供引用,您可以通过以下方式检查 MySQL 服务器是否已启动并正在运行:

  1. docker-compose up -d 开头。使用-d意味着您的容器将与终端分离,并在后台运行。
  2. 检查所有服务是否正常运行 docker-compose ps 。如果他们中的任何一个说类似 Exit (1)那么该特定服务没有运行。
  3. 检查 MySQL 服务器。运行docker-compose exec mysql mysql -uroot -pstrongpassword -e 'SELECT version();' pri .

现在,真正失败的是您的 Django 应用程序。 根据对相邻答案 ( dockerpri_web_1 exited with code 2 ) 的评论,发生的是您的 runserver 。进程死亡。但我们不知道为什么会这样——您的消息中没有足够的信息。不过,我不认为它与 MySQL 相关 - 即使数据库关闭,Django 也应该启动。它只会响应 500 错误,因为它将无法连接。

我的建议:

  1. 正如建议的那样,升级到 Compose 版本 2(另一个答案中有一个示例 - 这很好)。如果您不打算从主机访问 MySQL,您可以考虑删除 port: "3306:3306"来自mysql服务。这样,如果 3306 上已经有其他内容(XAMPP 或其他)正在监听,就不会发生冲突。

  2. 停止一切。 docker-compose down 。检查没有容器会干扰港口 33068000自身(使用 docker ps 检查)。

  3. 在后台运行 MySQL:docker-compose up -d mysql 。等待几秒钟并检查它是否仍然存在 docker-compose ps (“dockerpri_mysql_1”应该显示“Up”)。

  4. 现在,在 Django 容器中启动一个 shell:docker-compose run --rm --service-ports web /bin/bash 。运行python manage.py checkpython manage.py runserver 0.0.0.0:8000那里。现在,希望您应该只收到相关的错误消息,这样您就能够修复问题。 (如果 runserver 会默默退出,这是一个坏兆头 - 希望你的情况会更简单)

  5. 退出 exitCtrl+D - 容器将自动为您清理( --rm 标志负责处理此问题)。

关于python - Docker + Django + MySQL - 非 native 分区表列表末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44613256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com