如何在Docker镜像python:3上安装yq?

4uqofj5v  于 2023-01-04  发布在  Docker
关注(0)|答案(3)|浏览(262)

我想做的

我想安装yq来编辑Docker容器上的一些yaml文件。

停靠文件

FROM python:3
RUN apt-get update

RUN apt-key adv --keyserver keyserver.ubuntu.com --keyserver-option http-proxy=http://xxxxxx.com:9999 --recv-keys CC86BB64
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:rmescandon/yq
RUN apt update
RUN apt install yq -y

参考

https://github.com/mikefarah/yq#on-ubuntu-1604-or-higher-from-debian-package

构建日志

=> => transferring dockerfile: 486B                                                                                                                                                                                                          0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                             0.0s
 => => transferring context: 2B                                                                                                                                                                                                               0.0s
 => [internal] load metadata for docker.io/library/python:3                                                                                                                                                                                   0.0s
 => CACHED [1/7] FROM docker.io/library/python:3                                                                                                                                                                                              0.0s
 => [2/7] RUN apt-get update                                                                                                                                                                                                                  2.7s
 => [3/7] RUN apt-key adv --keyserver keyserver.ubuntu.com --keyserver-option http-proxy=http://xxxxxx.com:9999 --recv-keys CC86BB64                                                                                                   1.2s 
 => [4/7] RUN apt-get install -y software-properties-common                                                                                                                                                                                  11.4s 
 => [5/7] RUN add-apt-repository ppa:rmescandon/yq                                                                                                                                                                                           13.3s 
 => ERROR [6/7] RUN apt update                                                                                                                                                                                                                1.8s 
------                                                                                                                                                                                                                                             
 > [6/7] RUN apt update:                                                                                                                                                                                                                           
#9 0.159                                                                                                                                                                                                                                           
#9 0.159 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.                                                                                                                                                           
#9 0.159                                                                                                                                                                                                                                           
#9 0.205 Hit:1 http://deb.debian.org/debian buster InRelease                                                                                                                                                                                       
#9 0.205 Hit:2 http://security.debian.org/debian-security buster/updates InRelease
#9 0.227 Hit:3 http://deb.debian.org/debian buster-updates InRelease
#9 0.870 Ign:4 http://ppa.launchpad.net/rmescandon/yq/ubuntu impish InRelease
#9 1.356 Err:5 http://ppa.launchpad.net/rmescandon/yq/ubuntu impish Release
#9 1.356   404  Not Found [IP: 91.189.95.85 80]
#9 1.381 Reading package lists...
#9 1.752 E: The repository 'http://ppa.launchpad.net/rmescandon/yq/ubuntu impish Release' does not have a Release file.
------
executor failed running [/bin/sh -c apt update]: exit code: 100

问题

我该怎么修呢?

iswrvxsc

iswrvxsc1#

    • TL; DR**

yq的PPA在python:3映像的Linux发行版上不可用。
更改您的Dockerfile以直接下载二进制文件:

FROM python:3

RUN apt-get update
RUN apt-get install -y wget

# Latest on https://launchpad.net/~rmescandon/+archive/ubuntu/yq is 4.9.6
ARG VERSION=v4.9.6
ARG BINARY=yq_linux_386
RUN wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq \ 
    && chmod +x /usr/bin/yq
    • 说明**

上面提到的安装yq的说明要求的是基于Ubuntu的映像,但是python:3 Docker映像是基于Debian 10/Buster的(在写这个答案的时候):
Dockerfile for python:3 = python:3.9 = python:3.9.6
x一个一个一个一个x一个一个二个x
错误
E: The repository 'http://ppa.launchpad.net/rmescandon/yq/ubuntu impish Release' does not have a Release file.
表示软件包ppa:rmescandon/yqdoes not support your distribution。您可以从http://ppa.launchpad.net/rmescandon/yq/ubuntu查看支持的发行版:

The workaround is to just install it from source or to just download the yq binary itself. This is supported by yq: https://github.com/mikefarah/yq#wget:

工作

使用wget下载预编译的二进制文件:

通过tar.gz压缩
wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - | tar xz && mv ${BINARY} /usr/bin/yq
纯二进制
wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq

例如,版本= v4.2.0,二进制= yq_linux_amd64
yq's Releases page中选择一个特定的版本(最好与PPA中为Ubuntu发布的版本之一相匹配),并将您的Dockerfile修改为:

FROM python:3

RUN apt-get update
RUN apt-get install -y wget

# Latest on https://launchpad.net/~rmescandon/+archive/ubuntu/yq is 4.9.6
ARG VERSION=v4.9.6
ARG BINARY=yq_linux_386
RUN wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq \ 
    && chmod +x /usr/bin/yq
olhwl3o2

olhwl3o22#

前面的答案在我的情况下不起作用。
这是我的另一个解决方案:
从GitHub下载最新的yq可执行文件:

RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64

设置文件的执行权限:

RUN chmod a+x /usr/local/bin/yq
mfpqipee

mfpqipee3#

您还可以使用以下命令获取映像中的yq

FROM docker.io/mikefarah/yq:4.30.6 as yq
FROM python:3
COPY --from=yq "/usr/bin/yq" "/usr/local/bin/yq"
...

相关问题