Dockerfile跨平台TARGETARCH构建:amd64下libc6-i386无法安装
问题原因及解决方法
问题出在shell条件判断的语法错误:你Dockerfile中的if ["$TARGETARCH" = "amd64"]; then语句里,[符号后面、]符号前面缺少了空格。
在shell语法中,[是一个内置命令(等同于test),它需要和后续参数用空格分隔;同理,]作为命令的结束标记,前面也必须有空格。你的写法会让shell把["$TARGETARCH"当成一个完整命令去查找,导致条件判断逻辑失效——即使$TARGETARCH的值是amd64,也不会触发后续的安装操作。
修正后的Dockerfile代码片段
FROM tomcat:9 RUN apt-get update RUN apt-get install -y iputils-ping file ARG TARGETARCH # 修正:在[后、]前添加空格 RUN if [ "$TARGETARCH" = "amd64" ]; then \ apt-get install -y libc6-i386 ; \ fi WORKDIR /usr/local/tomcat ... // skipped
修正后重新执行跨平台构建命令,amd64架构的镜像就会正确安装libc6-i386包了。
内容的提问来源于stack exchange,提问作者smallufo
相关产品推荐
相关产品推荐

