Alpine Docker 容器无法将 UPX 识别为可执行文件
Alpine Docker container doesn't recognize UPX as an executable
堆垛机,
我正在使用 Docker 来容器化我的应用程序。在stage below, I'm trying to pack it using UPX。
FROM alpine:3.8 AS compressor
# Version of upx to be used(without the 'v' prefix)
# For all releases, see https://github.com/upx/upx/releases
ARG UPX_VERSION=3.94
# Fetch upx, decompress it, make it executable.
ADD https://github.com/upx/upx/releases/download/v${UPX_VERSION}/upx-${UPX_VERSION}-amd64_linux.tar.xz /tmp/upx.tar.xy
RUN tar -xJOf /tmp/upx.tar.xy upx-${UPX_VERSION}-amd64_linux/upx > /usr/local/bin/upx \
&& chmod +x /usr/local/bin/upx
COPY --from=builder /usr/local/bin/ace /usr/local/bin/ace
RUN /usr/local/bin/upx --overlay=strip --best /usr/local/bin/ace
问题是当我构建图像时出现以下错误:
The command '/bin/sh -c /usr/local/bin/upx --overlay=strip --best
/usr/local/bin/ace' returned a non-zero code: 127
出于某种原因,容器无法将 upx 识别为可执行文件!谁能给我一些指点?
您拥有的存档只是文件,因此您无法按名称寻址。如果你提取整个东西(这只是文件)它就可以工作。将 Dockerfile 中的相应行更改为以下内容:
RUN tar -xJOf /tmp/upx.tar.xy upx-${UPX_VERSION}-amd64_linux > /usr/local/bin/upx \
请注意,我从存档名称中删除了文件名。
原来有一个 UPX 的 apk 包。更简单的安装方法是:
apk add upx
添加 apk add --no-cache upx=3.95-r1
与 2019 年 3 月一样。
要让它与 Dockerfile 一起工作:
(根据您的喜好调整 Alpine 版本)
FROM alpine:latest as build
RUN apk add --no-cache upx
# Build and use upx as applicable...
堆垛机,
我正在使用 Docker 来容器化我的应用程序。在stage below, I'm trying to pack it using UPX。
FROM alpine:3.8 AS compressor
# Version of upx to be used(without the 'v' prefix)
# For all releases, see https://github.com/upx/upx/releases
ARG UPX_VERSION=3.94
# Fetch upx, decompress it, make it executable.
ADD https://github.com/upx/upx/releases/download/v${UPX_VERSION}/upx-${UPX_VERSION}-amd64_linux.tar.xz /tmp/upx.tar.xy
RUN tar -xJOf /tmp/upx.tar.xy upx-${UPX_VERSION}-amd64_linux/upx > /usr/local/bin/upx \
&& chmod +x /usr/local/bin/upx
COPY --from=builder /usr/local/bin/ace /usr/local/bin/ace
RUN /usr/local/bin/upx --overlay=strip --best /usr/local/bin/ace
问题是当我构建图像时出现以下错误:
The command '/bin/sh -c /usr/local/bin/upx --overlay=strip --best /usr/local/bin/ace' returned a non-zero code: 127
出于某种原因,容器无法将 upx 识别为可执行文件!谁能给我一些指点?
您拥有的存档只是文件,因此您无法按名称寻址。如果你提取整个东西(这只是文件)它就可以工作。将 Dockerfile 中的相应行更改为以下内容:
RUN tar -xJOf /tmp/upx.tar.xy upx-${UPX_VERSION}-amd64_linux > /usr/local/bin/upx \
请注意,我从存档名称中删除了文件名。
原来有一个 UPX 的 apk 包。更简单的安装方法是:
apk add upx
添加 apk add --no-cache upx=3.95-r1
与 2019 年 3 月一样。
要让它与 Dockerfile 一起工作:
(根据您的喜好调整 Alpine 版本)
FROM alpine:latest as build
RUN apk add --no-cache upx
# Build and use upx as applicable...