docker-java

===============
常见错误,应用无法显示验证码
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion 验证码无法显示
在Docker运行
Alpine 系统:

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk add fontconfig
apk add --update ttf-dejavu
fc-cache --force

===============
➜ 方案2:

项目采用docker进行构建运行,如果每次都需要重新安装此组件,很耗时。

采取另一种措施:重新构建一个基础镜像(安装好依赖,用于支持验证码功能)。

后续其他镜像基于此基础镜像做构建。

参考Dockerfile如下:

vim Dockerfile

Dockerfile内容如下:

FROM openjdk:8-alpine
#ADD ./test.jar /opt/App/test.jar
#拷贝字体文件
#COPY ./simhei.ttf /usr/share/fonts/simhei.ttf
#设置字符集
ENV LANG en_US.UTF-8
# RUN apk --update add font-config ttf-dejavu
# RUN rum -rf /var/cache/apk/*
RUN sed -i '3s/#//' /etc/apk/repositories
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories



RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
EXPOSE 8080
ENTRYPOINT ["java", "-jar"]
CMD ["test.jar"]

 

 

当前目录构建:

docker build -t myjava .

后续业务镜像基于新的基础镜像构建:

# FROM openjdk:8-jdk-alpine
FROM myjava
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08","-jar","/app.jar"]
EXPOSE 8080

===============

#Dockerfile
From openjdk:13-jdk-alpine
#设置字符集
ENV LANG en_US.UTF-8
# RUN apk --update add font-config ttf-dejavu
# RUN rum -rf /var/cache/apk/*
RUN sed -i '3s/#//' /etc/apk/repositories
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 
RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
RUN apk add tzdata  && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime    && echo "Asia/Shanghai" > /etc/timezone 
CMD ["/bin/sh"]

#编译模板
docker build -t myjava:11 -f ./Dockerfile .

#运行服务
#docker stop api
#docker rm api
docker run -itd --restart=unless-stopped --name api -v $(pwd):/app  -p 8081:8081 apnode/apnode:jdk8 java -jar /app/api.jar --spring.profiles.active=prod --server.port=8081

参考:
https://markix.blog.csdn.net/article/details/106470920
https://blog.csdn.net/jeikerxiao/article/details/109334619