【发布时间】:2022-01-17 22:09:17
【问题描述】:
TL/DR
我有一个可怕的难题要解决,似乎在网络上的任何地方都没有解决,所以现在我将它发布在这里,以防其他人遇到同样的问题。已经解决了,请看下面我的回答。
它与pip install有关,而不是安装那些缺少轮子文件的软件包。
长解释。
在运行docker-compose up 时,在构建映像阶段,一切似乎都像魅力一样工作,没有报告任何错误...直到容器启动...然后我遇到了一些像这样的奇怪错误:
@@Traceback (most recent call last):
File "/usr/local/bin/flask", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/flask/cli.py", line 894, in main
cli.main(args=args, prog_name=name)
File "/usr/local/lib/python3.7/dist-packages/flask/cli.py", line 557, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1132, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1171, in resolve_command
cmd = self.get_command(ctx, cmd_name)
File "/usr/local/lib/python3.7/dist-packages/flask/cli.py", line 500, in get_command
self._load_plugin_commands()
File "/usr/local/lib/python3.7/dist-packages/flask/cli.py", line 496, in _load_plugin_commands
self.add_command(ep.load(), ep.name)
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/_init_.py", line 2464, in load
self.require(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/_init_.py", line 2487, in require
items = working_set.resolve(reqs, env, installer, extras=self.extras)
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/_init_.py", line 777, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'alembic>=0.6' distribution was not found and is required by the application
即使我在 docker 安装它们时没有遇到任何错误,但似乎丢失了许多包。
更奇怪的是:当使用docker run --rm -it --entrypoint bash <service-name> 进入容器时,我可以使用pip3 install -r /var/www/webapp/requirements.txt.lock 手动安装所有丢失的包,没有任何问题。所有的错误都会消失。这是我的 Dockerfile 在构建镜像时用来安装 python 包的完全相同的命令。
我们不知道:
- 为什么现在会发生这种情况,因为它至少在一对夫妇之前一直有效 过去 2 年的几周前!
- 为什么 dockerfile 失败,但手动运行完全相同的命令有效。
- 为什么只有某些包丢失,而没有为它们引发错误。
- 如何解决这个问题。
【问题讨论】: