簡體   English   中英

Alpine Docker 容器無法將 UPX 識別為可執行文件

[英]Alpine Docker container doesn't recognize UPX as an executable

堆垛機,

我正在使用 Docker 來容器化我的應用程序。 在下面的階段,我正在嘗試使用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

問題是當我構建圖像時,我收到以下錯誤:

命令 '/bin/sh -c /usr/local/bin/upx --overlay=strip --best /usr/local/bin/ace' 返回非零代碼:127

出於某種原因,容器無法將 upx 識別為可執行文件! 誰能給我一些指點?

原來有一個 UPX 的 apk 包。 更簡單的安裝方法是:

apk add upx

您擁有的存檔只是文件,因此您無法按名稱尋址。 如果您提取整個內容(只是文件),則它可以工作。 將 Dockerfile 中的相應行更改為以下內容:

RUN tar -xJOf /tmp/upx.tar.xy upx-${UPX_VERSION}-amd64_linux > /usr/local/bin/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...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM