Docker构建Vue.js应用时npm install失败,ChromeDriver安装出错
Vue.js Docker构建中ChromeDriver安装失败的代理问题解决
我正在通过如下Docker配置构建Vue.js应用:
# build stage FROM node:10.15.0 as build-stage WORKDIR /app COPY . . RUN npm install RUN npm run build # production stage FROM nginx:1.13.12-alpine as production-stage . . .
由于当前环境无网络,我在COPY命令后添加了如下代理配置:
ENV HTTP_PROXY http://<proxy-ip>:3128 ENV HTTPS_PROXY http://<proxy-ip>:3128 ENV http_proxy http://<proxy-ip>:3128 ENV https_proxy http://<proxy-ip>:3128
但似乎仍无法完全连接网络,执行npm install步骤时出现ChromeDriver安装失败的错误(错误截图如下):
我还尝试了如下npm代理配置,但问题依旧:
RUN npm config set proxy http://<proxy-ip>:3128 RUN npm config set http-proxy http://<proxy-ip>:3128 RUN npm config set https-proxy http://<proxy-ip>:3128
请问该如何解决此问题?
解决方法
为ChromeDriver单独配置代理
ChromeDriver的安装脚本通常不读取系统或npm的全局代理配置,需单独设置专属环境变量,将以下代码放在RUN npm install之前:ENV CHROMEDRIVER_PROXY http://<proxy-ip>:3128直接在npm install命令中指定代理
跳过全局配置,直接给npm install命令传递代理参数,确保安装过程强制使用指定代理:RUN npm install --proxy http://<proxy-ip>:3128 --https-proxy http://<proxy-ip>:3128本地预下载ChromeDriver并复制到容器
- 在本地环境下载与项目依赖匹配的ChromeDriver版本,放到项目根目录的
chromedriver文件夹中; - 在Dockerfile中复制文件并赋予执行权限:
COPY ./chromedriver /usr/local/bin/ RUN chmod +x /usr/local/bin/chromedriver - 设置环境变量禁用npm自动下载ChromeDriver:
ENV CHROMEDRIVER_SKIP_DOWNLOAD true RUN npm install
- 在本地环境下载与项目依赖匹配的ChromeDriver版本,放到项目根目录的
检查代理白名单
确认代理服务器允许访问ChromeDriver官方下载源(https://chromedriver.storage.googleapis.com/),若该域名被代理拦截,需将其加入代理白名单。
内容的提问来源于stack exchange,提问作者rakesh kotian
相关产品推荐
相关产品推荐

