docker - Docker - Alpine Elixir 容器具有不可满足的约束
问题描述
我的 Phoenix 应用程序有这个Dockerfile。使用 Semaphore CI 运行促销时,我的部署失败并返回此错误:
ERROR: unsatisfiable constraints:
libssl1.0 (missing):
required by: world[libssl1.0]
pdftk (missing):
required by: world[pdftk]
这两个包怎么取不了?
解决方案
用作 ( Dockerfile ) 基础的映像 ( Dockerfile )最近已从erlang:20-alpine
Alpine 3.8更新到 3.9 ( Github commit )。elixir:1.6.6-alpine
Alpine 3.8 和 3.9 之间发生了以下变化:
库:
这个很容易修复:只需将libssl1.0
包替换为libssl1.1
.
pdftk:
pdftk
更有问题。它取决于libgcj6
GCC 6 的 Java 运行时。但是,Java 运行时已从 GCC 8 及更高版本中完全删除。libgcj6
是 GCC 6 的 Java 运行时,与 GCC 8 不兼容。安装libgcj6
也会拉取 GCC 6 C++ 运行时,libstdc++6 (6.4.0-r9)
.
尝试与pdftk
一起安装libgcj6
,例如:
RUN apk add --no-cache libgcj6 pdftk --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
失败:
ERROR: unsatisfiable constraints:
so:libgcj.so.17 (missing):
required by: pdftk-2.02-r1[so:libgcj.so.17]
不幸的是,我目前不熟悉解决方法。
这个问题有一张有效的开放 Alpine 票:https ://bugs.alpinelinux.org/issues/10136 ,所以值得留意可能的更新。
推荐阅读
- reactjs - 我在前端有数据,但在后端未定义
- python - 根据pandas中的公共列值将多个列合并在一起 - python
- python - 带有 id 的 kivymd 参考
- vb.net - 我的 VS2017 Intellisense 发生了什么
- c++ - C++ 二进制文件无法正确读取
- c# - 使用注入到 AspNet Core 的控制器中的类方法
- c# - 如何管理 tabitems c# 中的 webviews?
- iis - appcmd.exe 命令导致 win_command 模块中的错误
- c - 如何取消选择具有下拉样式的组合框中的文本?
- java - 创建单选按钮并检查具有从数据库中获取的值的单选按钮