RAP2重新打包镜像
打包一直失败
上周用官方github的Docker镜像跑通了,这周研发同学想看看能不能接入我们自己的单点登录,需要先用官方Dockerfile走一遍镜像的打包过程,这中间就遇到坑了。
https://github.com/thx/rap2-delos/blob/master/Dockerfile 进行到
RUN npm run build
这一步会出现下面的报错

Google和百度过,都显示说typescript的版本有问题。
解决报错
先查看官方镜像的信息,使用的基础镜像是2年前的

使用node:lts-alpine:latest进行打包后,用失败的镜像起来后看一下node npm版本,如下图:

这个node npm版本看起来可不是2年前的,tsc的版本与”typescript”: “^3.8.3″也差距很大。
换个思路,用node:lts-alpine:latest进行打包但是不运行npm装包操作,手动看一下,发现默认运行npm install typescript安装完成的ts版本是3.9.10,加一个全局-g参数后安装完成后的版本变成了最新的5.5.3,如下图:

安装typescript装包需要指定一下3.9.10版本应该就可以,3.9.10版本tsc编译过程没有问题

知道问题之后,改一下对应的Dockerfile
# BUILDING
FROM rapteam/rap2-delos AS builder
# base on work of llitfkitfk@gmail.com
LABEL maintainer="chibing.fy@alibaba-inc.com"
WORKDIR /app
# cache dependencies
COPY package.json ./
# 在国内打开下面一行加速
RUN npm config set registry https://registry.npmmirror.com/
# instal dependencies
RUN npm install typescript@3.9.10 -g && \ #主要改这边
npm install
# build
COPY . ./
RUN npm run build
再进行Docker build后不再报错了

写在最后
暂时解决了Docker image编译的问题,下周处理集成单点登录需求。
看欧洲杯有点气,西班牙过早换下了边路快马,导致赢得这么困难,德国队这浪费机会。。。
这法国队和葡萄牙看了上半场,菜鸡互啄,洗洗睡了…..太墨迹了