본문 바로가기

개발노트

(111)
testcontainers 사용 시, No such container 오류 메시지와 함께 test 가 실패한다면(feat. ARM) Java Application 또는 Spring 을 사용하는 Application 에서 테스트 코드에 testcontainers 를 사용하고 있다. 개발 환경은 M1 Mac 이고, 배포 타겟도 AWS 의 graviton EC2 위에 올리는 Elastic Container Service 이다. M1 Mac 으로 개발하기 전에는 Intel Mac 으로 개발을 했었고, 그 때에도 testcontainers 를 사용하여 테스틐 코드를 작성하며 개발했던 프로젝트가 있었다. public dockerhub 에의 접근은 limit 이 걸려있으므로, 이를 우회하기 위해 dockerhub 으로 pull 받은 이미지를 그대로 private AWS ECR 에 올려놓고 사용하고 있었다. testcontainers 를 사용하면 ..
jib 로 java application docker build 후 발생하는 docker logs exec user process caused exec format error 라는 에러 spring boot 로 새로운 서버 하나를 ECS on EC2 로 배포하고 있는데, jib 로 build 한 image 로 애플리케이션이 정상적으로 뜨지 않아 디버깅하던 중 docker logs 명령어의 결과가 `docker logs exec user process caused exec format error` 로 나왔다. 저 메시지는 주로 스크립트에 shebang 을 설정하지 않아서 어떤 환경으로 스크립트를 실행해야할 지 모를 때 발생하는 것으로 알고 있었는데, jib 에서 이런 문제를 만들었을 거라는 생각은 들지 않아 좀 더 찾아보았다. 결국은 jib 가 기본적으로는 amd architecture 에서 실행이 가능한 image 로 빌드를 하도록 돼있었고, 나는 build.gradle 에서 별도로 j..
맥 + chrome 단축키 변경 karabiner 로 cmd + y 를 globally "redo" 로 매핑해놨다. 근데 구글 크롬에서 히스토리를 여는 단축키도 cmd + y 였다. 그래서 cmd + y 로는 히스토리를 열지 못하고, 그동안 마우스로 열고 있었는데 키보드로 하는 방법을 찾아서 기록하게 됐다. Mac > System Preferences > Keyboard > App Shortscuts 메뉴에 온 다음 `+` 버튼을 눌러, Application : Google Chrome 을 선택하고, Metu Title: Show Full History 를 입력한다. (Menu title 이 정확하게 입력돼야 작동한다고 한다.) Keyboard Shortcut 에는 원하는 단축키로 매핑한다. 그러면 Mac OS 차원에서 내가 설정한 단..
ElasticSearch Docker 로 띄울 때 Docker Daemon 메모리를 확인하자 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html 위 문서에 잘 나와있다. 이 중에서 docker compose 를 이용하여 multiple nodes 를 띄우는 방식으로 진행을 했다. version: '2.2' services: es01: image: elasticsearch:7.17.0 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.seed_hosts=es02,es0..
m1 맥에서 오래된 루비 버전 설치 (with asdf) Intel Mac 에서 M1 Mac 으로 마이그레이션 한 후, rbenv 를 통해 설치해뒀었던 ruby 가 정상적으로 작동하지 않아서, rbenv 를 깔끔하게 지우고, asdf 를 통해 ruby 를 설치하던 중 겪었던 이슈들이 있어, 예전 버전의 루비 설치를 workaround 를 통해 설치 성공한 것에 대한 기록 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install asdf wget https://raw.githubusercontent.com/rbenv/homebrew-tap/e472b7861b49cc082d1db0f66f265368da107589/Formula/..
Intel 맥에서 M1 맥으로 마이그레이션 할 때 겪은 것들 회사에서 업무할 때, 지급받은 2018 Late Macbook Pro 를 사용하다가 이번에 14인치 Macbook M1 Pro 를 지급받아서 세팅을 했다. 기존 Intel 맥에서 이것저것 막 설치해서 사용해서 그런지, 결과적으로 M1 Mac 에서 포맷을 3번하고, "마이그레이션 지원" 앱을 통해 마이그레이션을 4번이나 시도한 끝에 다행히 기본적인 세팅은 끝낸 것 같다. 아직 안심하긴 이르지만, 아주 크리티컬한 문제가 있어서 기록해본다. 결과적으로 마이그레이션할 때, 기존 맥에서 Karabiner 앱을 사용하고 있었다면 이걸 삭제한 다음 마이그레이션을 진행하고, 이후에도 저 앱은 설치하지 않아야 한다는 사실을 기록/공유하기 위한 글이다. 다 지나고 난 지금 시점에서 생각해보니 귀찮지 않다면, 마이그레이션 ..
CodeBuild 에서 runtime 으로 jdk 17 (corretto17) 사용하기 가장 최신 LTS JDK 인 17 버전으로 개발한 프로젝트가 있는데, CodeBuild 는 JDK 11 까지만 지원하고 있어서, 해당 프로젝트를 CodeBuild 를 통해 빌드를 할 수가 없다. 곧 JDK 17 도 지원해주겠지만, 준비된 PR(https://github.com/aws/aws-codebuild-docker-images/pull/495) 은 있지만 아직 release 되기까지는 시간이 좀 걸릴 것 같다. 해당 PR 을 참고하여, 현재 내 프로젝트에서 CodeBuild 를 통해 corretto17 을 이용하여 Build 를 할 수 있도록 workaround 를 적용하고 있다. version: 0.2 env: variables: TZ: "Asia/Seoul" phases: install: run..
redis-cli 로 non-expiring key 찾아내기 (ttl 없는 key 찾기) redis-cli -h $READONLY_REDIS_NODE -n 2 --scan --pattern "pattern*" | while read LINE ; do TTL=`redis-cli -h $READONLY_REDIS_NODE ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE" >> /home/ec2-user/non-expiring-keys.out; fi; done; # -n 옵션은 database 선택 (select) https://stackoverflow.com/a/56265879/7548600 참고

반응형