docker - 使用 debian:stretch-slim 在 Docker 中安装 csvtk 时出现问题
问题描述
我是 Docker 的新手,我正在尝试csvtk
使用debian:stretch-slim
.
下面是我的Dockerfile
FROM debian:stretch-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
jq \
perl \
python3 \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN wget -qO- https://github.com/shenwei356/csvtk/releases/download/v0.23.0/csvtk_linux_amd64.tar.gz | tar -xz \
&& cp csvtk /usr/local/bin/
它在csvtk
步骤中失败并显示以下错误消息:
Step 3/3 : RUN wget -qO- https://github.com/shenwei356/csvtk/releases/download/v0.23.0/csvtk_linux_amd64.tar.gz | tar -xz && cp csvtk /usr/local/bin/
---> Running in 0f3a0e75a5de
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
The command '/bin/sh -c wget -qO- https://github.com/shenwei356/csvtk/releases/download/v0.23.0/csvtk_linux_amd64.tar.gz | tar -xz && cp csvtk /usr/local/bin/' returned a non-zero code: 2
我将不胜感激任何帮助/建议。
提前致谢。
解决方案
wget
退出时出现错误代码,这意味着 wget 上的 5 SSL 验证失败。从这个答案,你只需要安装ca-certificates
之前wget
。
此 Dockerfile 应该成功构建:
FROM debian:stretch-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
jq \
perl \
python3 \
wget \
# added this package to help with ssl certs in Docker
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN wget -qO- https://github.com/shenwei356/csvtk/releases/download/v0.23.0/csvtk_linux_amd64.tar.gz | tar -xz \
&& cp csvtk /usr/local/bin/
作为调试此类问题时的一般提示,最简单的方法可能是RUN
从 Dockerfile 中删除违规行,然后尝试在 shell 中构建和运行容器并手动执行所需的命令。像这样:
docker build -t test:v1 .
docker run --rm -it test:v1 /bin/bash
# run commands manually and check the full error output
虽然结合不同的RUN
指令&&
是减少图像层数的最佳实践,但在构建时很难调试。
推荐阅读
- php - 应用引擎 PHP - 自定义域上的 Cron 无法工作(始终指向 apppot)
- asp.net-mvc - Rest API,在客户端生成文件
- c# - XmlException:找不到类型
- python - 使用 Dask 加载多个 CSV 文件时混合列
- typescript - 如何确保类的参数类型实现接口
- amazon-web-services - 使用 lambda 生成 elbv2 属性(具体名称)时,从 Lambda 接收到名称超过 32 个字符的错误
- xml - xslt-1.0 for-each 循环获取所有子元素
- multithreading - 草书:Clojure 的 *out*、不同的 Writer、多线程时的刷新和排序不一致:这是怎么回事?
- linux - bash中的for循环
- javascript - 在 THREE.JS 中使用 PhongMaterial 时遇到问题