본문 바로가기
반응형

분류 전체보기296

Docker ENV vs RUN Export Docker에서 기본적으로 환경변수를 사용하는 경우 ENV를 사용하게 된다. 하지만 RUN 키워드로 Shell Command도 사용이 가능한데 환경변수 설정을 위해 RUN export를 사용하면 어떻게 될까. 결론부터 얘기하자면 RUN export는 동작하지 않는다. 그 이유는 RUN export 같은 경우 동일한 Image Layer에서만 사용이 가능하기 때문이다. 간단하게 아래의 예시를 살펴보자 FROM centos:6 ENV FOO=foofoo RUN export BAR=barbar RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ" 마지막 echo에서 각각 설정한 환경변수들을 참조하고 있는데 실행 결과는 다음과 같다. foofoo bazbaz FOO: ENV 키워드.. 2023. 7. 22.
Gradle fat jar(의존성 포함한 jar) 생성, shadow plugin 활용 일반적으로 Gradle로 jar를 빌드하게 되면 의존성을 설정한 외부 라이브러리(dependency)들은 포함이 되어있지 않다. dependency가 모두 포함된 jar로(fat jar) 빌드하기 위해서는 jar 빌드 시 아래 설정들을 추가해준다. 적용한 gradle 버전은 7.4 기준이다. jar{ enabled=true archiveClassifier = '' // use empty string from { // 의존성 포함 configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } duplicatesStrategy = DuplicatesStrategy.EXCLUDE // 중복처리 } 설정된 jar로 빌드를 하고 .. 2023. 7. 22.
Gradle build jar 시 plain(xxxx-plain.jar) 제거하기 gradle로 jar 빌드 시 bootJar(excutable jar)로 빌드하는 경우가 대부분이지만 공통모듈을 분리한다거나 라이브러리를 직접 개발해서 배포를 해야하는 경우가 있다. 이때 jar로 빌드를 하게 되면 jar 파일명에 plain이라는 Classifier가 붙게 된다. jar{ enabled=true } 이렇게 되면 다른 프로젝트 등에서 Nexus 등을 통해 의존성을 걸어서 사용할 때 안되는 경우가 발생한다. jar파일에서 plain을 제거하는 방법은 다음과 같다. jar{ enabled=true archiveClassifier = '' // Classifier 제거 } 빌드를 하게되면 이제 plain이 없어졌다. 2023. 7. 22.
Python BeautifulSoup Crawling(크롤링) 예제 파이썬(v3.9)으로 크롤링하는 예제를 간단히 남겨본다. 개발 환경은 아래와 같다 크롤링에 필요한 패키지 설치를 위해 requirements.txt 파일을 작성한다. python에서 클로링을 위해서 beautifulsoup을 많이 활용한다. beautifulsoup4==4.12.2 requests==2.31.0 그리고 패키지를 설치한다. pip install --no-cache-dir -r requirements.txt 이제 크롤링 python 샘플 코드를 아래와 같이 작성한다. 내용은 '네이버 뉴스검색'에서 키워드를 검색하고 그 결과를 출력하는 로직이다. 결과는 뉴스의 제목과 링크URL만 출력한다. import requests from bs4 import BeautifulSoup keyword = '자.. 2023. 7. 4.
poi SXSSFWorkbook createSheet FontConfiguration NullPointException Java에서 엑셀을 다룰 때 Apache POI 라이브러리를 자주 사용하게 된다. 그리고 대용량 처리를 위해서 Streaming API를 사용하는 SXSSFWorkbook을 사용하는데 서버에 올려서 테스트 중에 아래와 같은 에러가 발생했다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException] with root cause java.lang.NullPointerException: null at j.. 2023. 7. 3.
springdoc swagger ui disable Petstore(swagger-ui enabled false not working) Springdoc SwaggerUI를 사용하면서 한가지 이상점을 발견했다. SwaggerUI 설정을 QA, PRD 환경 등에서 disalbe 처리를 하기 위해서 아래와 같이 application.yml파일에 간단히 disable 설정을하고 테스트를 해봤다. springdoc: swagger-ui: enabled: false Application의 API는 diable처리가 됐는데 Swagger의 기본 샘플인 Petstore API가 나타나기 시작한것이다. 사실 Application의 API Doc을 제한하겠다는 목적은 달성했다하지만 그렇다고 기본 샘플이 뜨는것은 이해가 안되는 상황이고 찜찜하다. yml 설정에서 'disable-swagger-default-url: true' 등 기타 다른 설정들을 모두 .. 2023. 6. 19.
DBeaver posgresql JDBC 드라이버 수동 설정 DB Clinet Tool로 많이 사용하고 있는 DBeaver에서 DB 드라이버 수동 설정하는 방법을 알아본다. 먼저 posgresql의 드라이버를 다운로드 받는다. https://jdbc.postgresql.org/download/ 이제 DBeaver에서 postgresql database 연결 설정을 시작한다. 'DB 연결 설정'에서 우측하단의 Driver Settings를 클릭한다. Driver Settings 팝업에서 두번째 탭 "Libraries"를 클릭한다. 그럼 기본으로 설정된 라이브러리들이 몇가지 보이는데 불필요함으로 모두 선택하고 Delete를 한다(Optional). 그리고 Add File를 선택해서 다운로드 받은 postgresql jdbc 드라이버를 추가 후 OK를 눌러 팝업을 닫는.. 2023. 6. 19.
AWS 외부 SSL 인증서 적용(인증서 가져오기 및 ALB 적용) AWS에서 SSL 인증서가 필요한 경우 ACM(Certificate Manager)에시 인증서 요청을 통해 AWS가 자동으로 관리해주는 인증서를 쉽게 사용할 수 있다. 하지만 가끔 외부에서 발급받은 인증서를 등록해서 사용해야 하는 경우가 있는데 이 방법을 정리해본다. 먼저 ACM(AWS Certificate Manager)에 접속하고 가져오기 버튼을 클릭한다. 인증서 세부 정보 입력에서 외부 인증서 내용을 복사 붙여 넣기한다. 문제가 없는 경우 아래와 같이 인증서 등록된다. 다음으로 이 인증서를 ALB(Application Load Balancer)에 적용한다. 아래와 같이 ALB Listener에 443 port를 등록하고, Secure listener에서 From ACM을 선택 후 인증서를 선택해준.. 2023. 6. 12.
반응형