为什么我的基于 python:3.8-alpine 的应用程序会因 importlib_metadata 中的语法错误而崩溃

Why does my python:3.8-alpine based application crash on a syntax error inside importlib_metadata

我在启动本机运行良好的容器化服务器时遇到问题,问题是它在运行时崩溃。这是 docker-compose 命令的输出:

zos_context    |   File "/code/redis_client.py", line 4, in <module>
zos_context    |     import redis
zos_context    |   File "/usr/local/lib/python3.5/dist-packages/redis/__init__.py", line 6, in <module>
zos_context    |     import importlib_metadata as metadata
zos_context    |   File "/usr/local/lib/python3.5/dist-packages/importlib_metadata/__init__.py", line 55
zos_context    |     return f"No package metadata was found for {self.name}"
zos_context    |                                                           ^
zos_context    | SyntaxError: invalid syntax
zos_context exited with code 1

我使用的图像是 python:3.8-alpine。我也试过 python:3.7-alpine 甚至 python:3.5-alpine 但同样的错误总是发生.
这是 Dockerfile 的一部分:

FROM python:3.8-alpine

WORKDIR /code

RUN pip3 install redis
RUN pip3 install redis pika

CMD ["python3", "/code/server.py"]`

问题是我使用的 docker-compose 只是使用过时的映像启动容器,解决方案是将本地机器上的工作目录挂载到容器上以跟上更新。 另一种解决方案是在使用 docker-compose:

启动时使用添加参数 --build
docker-compose up -d --build