本地沒問題,部署到服務器上圖片驗證碼生成報錯。原來是圖形驗證碼依賴了系統組件,只需安裝依賴即可解決。
1、Centos 7.3系統:
yum install fontconfig fc-cache --force
2、Alpine 系統:
apk add fontconfig
apk add --update ttf-dejavu
fc-cache --force
3、項目采用docker進行構建運行,如果每次都需要重新安裝此組件,很耗時。
采取另一種措施:重新構建一個基礎鏡像(安裝好依賴,用於支持驗證碼功能)。后續其他鏡像基於此基礎鏡像做構建。
參考Dockerfile如下:
FROM openjdk:8-jdk-alpine
RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
構建:docker build -t new/openjdk:8-jdk-alpine .
后續業務鏡像基於新的基礎鏡像構建:
# FROM openjdk:8-jdk-alpine
FROM new/openjdk:8-jdk-alpine
ADD *.jar app.jar
EXPOSE 8080
ENV MYSQL_SERVER="127.0.0.1:3306"
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08","-jar","/app.jar"]