Spring) Docker JDK 무조건 신뢰 금지

CokeBear·2022년 8월 30일
1

spring

목록 보기
11/15

문제

  • Telegram message 일일근태 API 가 Local에서는 작동하나, ec2에서는 작동안하는 문제 확인.

원인 찾기

FROM --platform=linux/amd64 openjdk:17-slim

ARG JAR_FILE=build/libs/*.jar


COPY ${JAR_FILE} /app/isolution-api.jar

WORKDIR /app

ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=${PROFILE}", "-Dcom.amazonaws.sdk.disableEc2Metadata=true", "/app/isolution-api.jar"]
  • 프로젝트에 있던 도커파일을 빌드하여 로컬에서 도커를 띄워본다.
  • Docker Log를 띄우니 unsatisfiedlinkerror /usr/local/openjdk-11/lib/libfontmanager.so 가 발생
  • Library 경로 오류로 확인되었다.

삽질 1

  • 해당 경로에 libfontmanager.so 파일을 넣어주는 방법을 생각했으나
  • so 파일은 linux 에서만 확인되는 파일임을 확인하고 포기

삽질 2

  • libfontmanager.so 파일에 대해 찾던 결과 mac에서는 dylib를 사용하며,
    해당 확장자는 동적라이브러리 즉, 사용될때 로드되는 라이브러리.
  • html을 이미지로 변환하는 과정중에 java 7에서 사용되었던 라이브러리가 있었고 해당 부분에서 문제가 발생되었음을 확인.

문제해결

stackoverflow #335 참고

  • Docker에서 jdk 일부버전 (slim... 등등) 은 동적라이브러리를 포함하지 않는다.
bzip2/stable,now 1.0.6-8.1 amd64 [installed]
fontconfig-config/stable,now 2.11.0-6.7 all [installed,automatic]
java-common/stable,now 0.58+deb9u1 all [installed,automatic]
libavahi-client3/stable,now 0.6.32-2 amd64 [installed,automatic]
libavahi-common-data/stable,now 0.6.32-2 amd64 [installed,automatic]
libavahi-common3/stable,now 0.6.32-2 amd64 [installed,automatic]
libbsd0/stable,now 0.8.3-1 amd64 [installed,automatic]
libcups2/stable,now 2.2.1-8+deb9u3 amd64 [installed,automatic]
libdbus-1-3/stable,now 1.10.26-0+deb9u1 amd64 [installed,automatic]
libfontconfig1/stable,now 2.11.0-6.7+b1 amd64 [installed,automatic]
libfreetype6/stable,now 2.6.3-3.2 amd64 [installed]
libgmp10/stable,now 2:6.1.2+dfsg-1 amd64 [installed,automatic]
libgnutls30/stable,now 3.5.8-5+deb9u4 amd64 [installed,automatic]
libgssapi-krb5-2/stable,now 1.15-1+deb9u1 amd64 [installed,automatic]
libhogweed4/stable,now 3.3-1+b2 amd64 [installed,automatic]
libidn11/stable,now 1.33-1 amd64 [installed,automatic]
libjpeg62-turbo/stable,now 1:1.5.1-2 amd64 [installed,automatic]
libk5crypto3/stable,now 1.15-1+deb9u1 amd64 [installed,automatic]
libkeyutils1/stable,now 1.5.9-9 amd64 [installed,automatic]
libkrb5-3/stable,now 1.15-1+deb9u1 amd64 [installed,automatic]
libkrb5support0/stable,now 1.15-1+deb9u1 amd64 [installed,automatic]
liblcms2-2/stable,stable,now 2.8-4+deb9u1 amd64 [installed,automatic]
libnettle6/stable,now 3.3-1+b2 amd64 [installed,automatic]
libnspr4/stable,now 2:4.12-6 amd64 [installed,automatic]
libnss3/stable,stable,now 2:3.26.2-1.1+deb9u1 amd64 [installed,automatic]
libpcsclite1/stable,now 1.8.20-1 amd64 [installed,automatic]
libpng16-16/stable,now 1.6.28-1+deb9u1 amd64 [installed,automatic]
libsqlite3-0/stable,now 3.16.2-5+deb9u1 amd64 [installed,automatic]
libx11-6/stable,now 2:1.6.4-3+deb9u1 amd64 [installed,automatic]
libx11-data/stable,now 2:1.6.4-3+deb9u1 all [installed,automatic]
libxau6/stable,now 1:1.0.8-1 amd64 [installed,automatic]
libxcb1/stable,now 1.12-1 amd64 [installed,automatic]
libxdmcp6/stable,now 1:1.1.2-3 amd64 [installed,automatic]
libxext6/stable,now 2:1.3.3-1+b2 amd64 [installed,automatic]
libxi6/stable,now 2:1.7.9-1 amd64 [installed,automatic]
libxrender1/stable,now 1:0.9.10-1 amd64 [installed,automatic]
libxtst6/stable,now 2:1.2.3-1 amd64 [installed,automatic]
openjdk-8-jdk-headless/stable,stable,now 8u212-b01-1~deb9u1 amd64 [installed]
openjdk-8-jre-headless/stable,stable,now 8u212-b01-1~deb9u1 amd64 [installed,automatic]
ucf/stable,now 3.0036 all [installed,automatic]
unzip/stable,now 6.0-21+deb9u1 amd64 [installed]
x11-common/stable,now 1:7.7+19 all [installed,automatic]
xz-utils/stable,now 5.2.2-1.2+b1 amd64 [installed]
  • 따라서 Dockerfile중 jdk를 변경

openjdk:17-slim -> openjdk:17-ea-33-jdk-buster

  • 도커에서 작동됨을 확인하고 문제 해결
profile
back end developer

0개의 댓글