ele-admin / EasyCaptcha

Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
Apache License 2.0
121 stars 26 forks source link

在docker里运行失败 #24

Open vanish1984 opened 4 years ago

vanish1984 commented 4 years ago

描述

  1. 正常调试无问题

  2. 打包成 docker 后,报空指针

docker file

FROM frolvlad/alpine-oraclejdk8:slim
# 包与运行
RUN mkdir /data
ADD ./target/mini-admin-0.0.1-SNAPSHOT.jar /data/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "-server", "-Xmx2048m", "-Xms2048m","-Dspring.profiles.active=prod", "/data/app.jar"]

Error

2020-04-12T15:56:43.381351900Z 2020-04-12 23:56:43.380 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]      : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
2020-04-12T15:56:43.381417400Z
2020-04-12T15:56:43.381439100Z java.lang.NullPointerException: null
2020-04-12T15:56:43.381459400Z  at com.wf.captcha.base.ArithmeticCaptchaAbstract.alphas(ArithmeticCaptchaAbstract.java:42) ~[easy-captcha-1.6.2.jar!/:na]
2020-04-12T15:56:43.381479900Z  at com.wf.captcha.base.Captcha.checkAlpha(Captcha.java:156) ~[easy-captcha-1.6.2.jar!/:na]
2020-04-12T15:56:43.381500000Z  at com.wf.captcha.base.Captcha.text(Captcha.java:137) ~[easy-captcha-1.6.2.jar!/:na]

....
vanish1984 commented 4 years ago

基本上确认是在 alpine 环境里失败

chfeizy commented 4 years ago

1、dockerfile文件内容

FROM openjdk:8-jdk-alpine VOLUME /tmp VOLUME /logs COPY ./actionj.ttf /usr/share/fonts/ttf-dejavu/actionj.ttf ENV LANG en_US.UTF-8 RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/main\n\ https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/community" > /etc/apk/repositories RUN rm -rf /var/cache/apk/ && \ rm -rf /tmp/ RUN apk update RUN apk add --update --no-cache --wait 10 ttf-dejavu fontconfig && rm -rf /var/cache/apk/* ADD /admin-rbac.jar // ENV JAVA_OPTS -Duser.timezone=GMT+08 -Xms128m -Xmx128m ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /admin-rbac.jar"]

2、actionj.ttf把这个放到dockerfile同目录 3、specCaptcha.setFont(new Font("Action Jackson", Font.PLAIN, 32));

以上操作就可以了

rpdict commented 4 years ago

同样的问题,alpine 下用不了,我换了镜像“FROM java:8” debian下可以用,还以为是openjdk导致的

Sacherer commented 4 years ago

The same problem has not been solved. How to solve it?

Sacherer commented 4 years ago

基本上确认是在 alpine 环境里失败 Is it solved?