小编Dni*_*sor的帖子

如何解决Alpine docker容器内Flask应用程序的Gunicorn执行程序上引发的``OSError:libc not found''问题

我正在基于Miguel Grinberg的大型教程的Microblog应用程序开发Flask应用程序。代码位于此处:https : //github.com/dnilasor/quickgig。我有一个带有链接的MySQL 5.7容器的可运行docker实现。今天,我使用Flask-Admin模块添加了一个Admin View功能。它通过“烧瓶运行”在Flask服务器上本地服务(OSX)上精美地工作,但是当我构建并运行新的docker镜像(基于python:3.8-alpine)时,它在启动时崩溃并出现OSError: libc not found错误,其代码似乎指示未知的图书馆

在我看来,Gunicorn无法在我添加内容后继续提供该应用程序。我和我的同学很沮丧!

我最初使用python:3.6-alpine基本图像得到了错误,因此尝试使用3.7和3.8无济于事。我还注意到,一旦在requirements.txt中指定了版本号,便会多余地添加PyMySQL。并再次在dockerfile中明确显示,没有任何规范。删除了requirements.txt条目。还尝试增加Flask-Admin版本号。上和下。还尝试清理数据库迁移,因为我已经看到多个迁移文件导致容器无法启动(诚然,这是在使用SQLite时)。现在只有一个迁移文件,并且基于堆栈跟踪,看起来flask db upgrade工作正常。

我尚未尝试的一件事是不同的基本映像(最少的基本映像?),可以尽快尝试并更新它。但是这个问题对我来说是如此神秘,以至于我认为是时候问其他人是否看过它了:)

我确实发现了这个套接字漏洞,它似乎可能相关,但是应该在python 3.8中已完全修复。

此外FYI我跟着一些建议这里的圆形进口和进口我的管理控制器功能里面create_app

Dockerfile:

FROM python:3.8-alpine

RUN adduser -D quickgig

WORKDIR /home/quickgig

COPY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn pymysql

COPY app app
COPY migrations migrations
COPY quickgig.py config.py boot.sh ./
RUN chmod +x boot.sh

ENV FLASK_APP quickgig.py

RUN chown -R quickgig:quickgig ./ …
Run Code Online (Sandbox Code Playgroud)

python sockets flask gunicorn docker

11
推荐指数
2
解决办法
1536
查看次数

标签 统计

docker ×1

flask ×1

gunicorn ×1

python ×1

sockets ×1