Docker构建Strapi遇nginx缺失及npm脚本错误求助
问题解决:Strapi Docker镜像运行时的Nginx与NPM脚本错误
错误信息
: No such file or directoryline 2: /usr/sbin/nginx
npm ERR! missing script: develop
问题1:Nginx找不到
原因
Dockerfile中安装Nginx时使用了未定义的环境变量${NGINX_VERSION},导致安装命令无效,Nginx并未被正确安装到容器中。
修复步骤
- 添加Nginx版本环境变量:在Dockerfile开头添加
ENV NGINX_VERSION 1.24.0(可根据SLES 15的兼容版本调整) - 修正安装命令:若不需要指定版本,可直接改为:
zypper --non-interactive install -y nginx - 验证Nginx路径:在Dockerfile的Nginx安装步骤末尾添加
which nginx命令确认路径,根据输出调整dockerRun.sh中的启动路径 - 调整Nginx启动方式:修改
dockerRun.sh中的命令,避免Nginx后台运行导致容器提前退出:/usr/sbin/nginx -g "daemon off;" &
问题2:NPM Develop脚本缺失
原因
容器内的package.json未定义develop脚本,或脚本名称不匹配。
修复步骤
- 检查本地package.json:确保Strapi项目根目录的
package.json包含对应脚本:"scripts": { "develop": "strapi develop", "start": "strapi start", "build": "strapi build" } - 确认文件复制逻辑:Dockerfile中已执行
COPY package.json ./和COPY . .,需确保本地package.json被正确复制到容器/usr/src/app目录 - 可选启动方式:若不想依赖npm脚本,可直接在
dockerRun.sh中使用命令启动:npx strapi develop
额外Dockerfile修正点
- 修复仓库地址换行问题:添加COMMON_BASE_OS_SLES_REPO的命令中,仓库地址被拆分,需合并为一行:
RUN zypper addrepo -C -G -f https://arm.rnd.confidencial.se/artifactory/proj-local/common_base_os/sles/3.37.0-5?ssl_verify=no COMMON_BASE_OS_SLES_REPO && \
内容的提问来源于stack exchange,提问作者Nectar Mind
相关产品推荐
相关产品推荐

