uncarman2012 2024-08-10 19:39 采纳率: 0%
浏览 7

Docker打包DJango应用,容器启动异常

Docker打包Django服务,使用gunicorn做服务载体,容器启动报错如下:

[root@VM-4-16-opencloudos ~]# docker logs 7914255e8a68
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 209, in run
    self.sleep()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 360, in sleep
    ready = select.select([self.PIPE[0]], [], [], 1.0)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
    self.reap_workers()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 530, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/gunicorn", line 8, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 67, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]", prog=prog).run()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 236, in run
    super().run()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 229, in run
    self.halt(reason=inst.reason, exit_status=inst.exit_status)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 342, in halt
    self.stop()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 396, in stop
    time.sleep(0.1)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
    self.reap_workers()
  File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 530, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

Dockfile文件内容如下:

FROM python:3.8.10
WORKDIR /python/src/lite-coi-backend
COPY requirements.txt ./
RUN pip3 install --upgrade pip -i  https://mirrors.aliyun.com/pypi/simple
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
COPY ./ ./

EXPOSE 8080
# CMD ["gunicorn", "-c", "./gunicorn.conf.py", "litecoi.wsgi:application"]
CMD ["gunicorn", "-b", "0.0.0.0:8000", "--trace","litecoi.wsgi:application"]

requirements.txt文件内容如下
Django==4.2.9
django-cors-headers==4.3.1
djangorestframework==3.15.1
gunicorn
gevent
greenlet
Requests==2.32.3
pytz==2024.1
mysqlclient==2.2.4

请大家帮忙看看!

  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-10 19:39
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你提供的错误日志来看,问题似乎出在Gunicorn无法启动worker上。这可能是由于多种原因导致的,包括但不限于Django应用中的错误、依赖问题或配置问题。下面是一些可能的解决步骤:

    1. 检查Django应用

    确保你的Django应用可以正常运行,尝试在没有Docker的情况下直接运行你的应用。可以通过运行命令 python manage.py runserver 来测试你的Django应用是否能正常运行。如果你在这个过程中遇到任何错误,那就需要解决这些错误。

    2. 检查Dockerfile和Gunicorn配置

    你的Dockerfile看起来是正确的,但你可以尝试一些小的改动来调试问题。尝试在你的CMD指令中包含更多的调试信息,这将帮助你理解问题的根源。你也可以尝试在你的Dockerfile中添加对Gunicorn配置文件的复制。另外确保你的Gunicorn配置文件没有错误并且与你的Django应用兼容。尝试添加 -v--verbose 参数来获取更详细的输出。例如:

    CMD ["gunicorn", "-b", "0.0.0.0:8000", "--trace", "-v", "./litecoi.wsgi:application"]
    

    3. 检查环境变量和依赖项

    确保所有的环境变量都已正确设置,并且所有的依赖项都已正确安装。在你的Dockerfile中,你可以使用 ENV 指令来设置环境变量。此外,确保你在运行Django应用时使用的Python版本与你的依赖项兼容。你的Dockerfile中使用的是Python 3.8.10版本,确保你的Django版本和依赖项也支持这个版本。

    4. 检查日志和错误输出

    尝试查看更详细的日志和错误输出,以获取更多关于问题的信息。你可以在Docker容器中运行你的应用并附加详细的日志记录,或者使用Docker logs命令来获取日志输出。你也可以尝试使用像 docker-compose exec 这样的命令来进入你的Docker容器并手动检查问题。

    总结:

    这个问题可能涉及到多个方面,包括代码错误、配置问题或环境设置问题。建议你按照上述步骤逐一排查问题,并尝试修复可能的问题点。希望这些信息对你有所帮助!

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月10日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?