You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建WSO2 API Manager 4.2.0 Docker镜像遇目录不存在错误求助

问题分析与解决:WSO2 API Manager 4.2.0 Docker构建错误

问题描述

完成WSO2 API Manager 4.2.0配置后,参照文档制作Docker镜像:从GitHub复制Dockerfile与entrypoint,将WSO2_SERVER_DIST_URL设置为https://github.com/wso2/product-apim/archive/refs/tags/v4.2.0.zip,执行docker build -t wso2am:4.2.0 .命令时,出现错误:

chown: cannot access '/home/wso2carbon/wso2am-4.2.0': No such file or directory

相关Dockerfile代码片段:

chown: cannot access '/home/wso2carbon/wso2am-4.2.0': No such file or directory
------
Dockerfile:107
--------------------
 106 |     # add the WSO2 product distribution to user's home directory
 107 | >>> RUN \
 108 | >>>     wget -O ${WSO2_SERVER}.zip "${WSO2_SERVER_DIST_URL}" \
 109 | >>>     && unzip -d ${USER_HOME} ${WSO2_SERVER}.zip \
 110 | >>>     && chown wso2carbon:wso2 -R ${WSO2_SERVER_HOME} \
 111 | >>>     && mkdir ${USER_HOME}/wso2-tmp \
 112 | >>>     && bash -c 'mkdir -p ${USER_HOME}/solr/{indexed-data,database}' \
 113 | >>>     && chown wso2carbon:wso2 -R ${USER_HOME}/solr \
 114 | >>>     && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/synapse-configs ${USER_HOME}/wso2-tmp \
 115 | >>>     && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/executionplans ${USER_HOME}/wso2-tmp \
 116 | >>>     && rm -f ${WSO2_SERVER}.zip

修改后的ARG配置:

ARG USER=wso2carbon
ARG USER_ID=802
ARG USER_GROUP=wso2
ARG USER_GROUP_ID=802
ARG USER_HOME=/home/${USER}
# build arguments for WSO2 product installation
ARG WSO2_SERVER_NAME=wso2am
ARG WSO2_SERVER_VERSION=4.2.0
ARG WSO2_SERVER_REPOSITORY=product-apim
ARG WSO2_SERVER=${WSO2_SERVER_NAME}-${WSO2_SERVER_VERSION}
ARG WSO2_SERVER_HOME=${USER_HOME}/${WSO2_SERVER}
ARG WSO2_SERVER_DIST_URL=https://github.com/wso2/product-apim/archive/refs/tags/v4.2.0.zip 
...
RUN \
    wget -O ${WSO2_SERVER}.zip "${WSO2_SERVER_DIST_URL}" \
    && unzip -d ${USER_HOME} ${WSO2_SERVER}.zip \
    && chown wso2carbon:wso2 -R ${WSO2_SERVER_HOME} \
    && mkdir ${USER_HOME}/wso2-tmp \
    && bash -c 'mkdir -p ${USER_HOME}/solr/{indexed-data,database}' \
    && chown wso2carbon:wso2 -R ${USER_HOME}/solr \
    && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/synapse-configs ${USER_HOME}/wso2-tmp \
    && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/executionplans ${USER_HOME}/wso2-tmp \
    && rm -f ${WSO2_SERVER}.zip

问题根源

从GitHub标签下载的zip包解压后,目录名称为product-apim-4.2.0,但Dockerfile中定义的${WSO2_SERVER}是wso2am-4.2.0,导致${WSO2_SERVER_HOME}指向的目录不存在,进而触发chown命令报错。

解决方法

方案1:重命名解压后的目录

在unzip命令后添加目录重命名步骤,将解压出的目录改为Dockerfile预期的名称:

RUN \
    wget -O ${WSO2_SERVER}.zip "${WSO2_SERVER_DIST_URL}" \
    && unzip -d ${USER_HOME} ${WSO2_SERVER}.zip \
    && mv ${USER_HOME}/product-apim-${WSO2_SERVER_VERSION} ${WSO2_SERVER_HOME} \
    && chown wso2carbon:wso2 -R ${WSO2_SERVER_HOME} \
    && mkdir ${USER_HOME}/wso2-tmp \
    && bash -c 'mkdir -p ${USER_HOME}/solr/{indexed-data,database}' \
    && chown wso2carbon:wso2 -R ${USER_HOME}/solr \
    && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/synapse-configs ${USER_HOME}/wso2-tmp \
    && cp -r ${WSO2_SERVER_HOME}/repository/deployment/server/executionplans ${USER_HOME}/wso2-tmp \
    && rm -f ${WSO2_SERVER}.zip

方案2:调整ARG变量匹配实际目录

修改WSO2_SERVER变量的值,使其与解压后的目录名称一致:

ARG WSO2_SERVER=product-apim-${WSO2_SERVER_VERSION}

这样${WSO2_SERVER_HOME}会自动指向正确的/home/wso2carbon/product-apim-4.2.0目录,无需修改后续命令。


内容的提问来源于stack exchange,提问作者Kamel HTIRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:05:30