Apple Silicon에서 CI 빌드 이미지가 재시작을 반복할 때 (jib platforms 수정)
안녕하세요, 강의 잘 듣고 있습니다. 공유드릴 내용이 있어서 남깁니다.
Apple Silicon(M3)에서 kind로 실습하다가, CI(GitHub Actions)가 빌드한 이미지가 계속 Running 0/1에서 재시작되는 문제를 겪었습니다.
원인
sns-app 레포의 build.gradle.kts에 있는 jib { from { platforms { ... } } } 블록이 빌드 머신의 아키텍처를 따라가도록 되어 있었습니다.
```kotlin
architecture = if (System.getProperty("os.arch") == "aarch64") "arm64" else "amd64"
```
GitHub Actions 러너는 x86이라 amd64 이미지가 만들어졌고, 이게 arm64 노드(Apple Silicon의 kind)에서 에뮬레이션으로 돌면서 기동이 너무 느려 liveness 프로브에 계속 죽었습니다.
저는 이렇게 해결했습니다.
sns-app 레포 루트의 build.gradle.kts 파일에서 jib { from { platforms { ... } } } 부분을 아래처럼 수정했습니다. 기존에는 platform { ... } 하나에 if 분기가 들어 있었는데, 이를 지우고 두 플랫폼을 모두 지정했습니다.
jib {
from {
image = "eclipse-temurin:25-jre-alpine"
platforms {
platform {
architecture = "amd64"
os = "linux"
}
platform {
architecture = "arm64"
os = "linux"
}
}
}
// to, container 블록은 그대로
}
amd64와 arm64를 둘 다 지정해서 멀티 플랫폼 이미지로 빌드했더니 정상 동작했습니다. 같은 환경에서 따라 하시는 분들께 도움이 될 것 같아 남깁니다. 감사합니다.
回答 1
1
안녕하세요. 아라레님!
원인 분석과 해결 방법을 자세히 공유해주셔서 감사합니다!
말씀해주신 내용을 확인하고, 제 맥북(M3 Max)에서도 GHCR의 amd64 이미지를 실습과 같은 앱 리소스 제한과 상태 검사 설정으로 다시 실행해봤습니다.
제 환경에서는 Docker Desktop의 amd64 이미지가 Rosetta 로 실행되어 애플리케이션 기동이 성공했고 (약 34초 소요), liveness 검사에서도 재시작 없이 정상 동작했습니다.
다만 Apple Silicon의 모든 환경에서 동일하게 동작하지는 않을 수 있고,
Docker Desktop의 가상화와 에뮬레이션 설정, 할당 자원 등에 따라 아라레님 처럼 기동 시간과 실행 결과가 달라질 수 있습니다.
말씀해주신대로 강의 자료에서 기존 설정이 CI 러너의 아키텍처에 맞는 이미지 하나만 생성하는 건 맞구요. 로컬 빌드 환경과 CI 이미지의 실행 환경이 달라지는 경우를 제가 충분히 고려하지 못했네요.
공유해주신 것처럼 amd64와 arm64를 모두 지정해 멀티 플랫폼 이미지로 이미지 저장소(ghcr)에 게시하면, 로컬 PC 에서 이 이미지를 불러올 때 맥북 실리콘(ARM64 노드)은 더이상 AMD64 가 아니라 ARM64 이미지를 선택하므로 해당 변환 과정 없이 실행할 수 있습니다. 그래서 제안해주신 수정 방향은 적절해보입니다!
이 부분은 조만간 강의를 업데이트하도록 하겠습니다
직접 해결하신 과정을 공유해주셔서 감사합니다 🙇♂️
1
안녕하세요 한조각님, 빠르게 반영해 주셔서 감사합니다.
참고로 저는 회사 PC라 Docker Desktop을 사용할 수 없어서 colima로 실습하고 있습니다. colima는 Rosetta가 꺼져 있어서(rosetta: false) amd64 이미지가 QEMU로 실행됐고, 그래서 같은 Apple Silicon이어도 문제가 더 크게 나타났던 것 같습니다.
감사합니다.
안녕하세요aks에대한 문의드립니다.
0
9
1
herdr로 오른쪽 pane 열려고 하는데 문제가 발생하네요
0
10
0
dev-pipeline 질문
0
17
0
강사님 질문이 있는데요.
0
18
1
https 도메인
0
19
0
로그인 확인
0
29
2
클로드 디자인 업데이트로 인한 강의 수정 요청
0
20
1
Unit 4.2 OPENROUTER_API_KEY가 설정되어 있지 않습니다.
0
22
0
디자인 시스템을 사용해 UI 만들기
0
20
1
Claude Pilot 프로그램이 뭐죠?
0
22
0
-a cline 옵션은 넣었는지 궁금합니다.
0
21
1
조금 전에 18강을 들었는데요..
0
32
2
Decker 설치 완료후 Decker engine 실행문의
0
27
2
지금 첫강의 듣고 있는데요, 필요한 최소사앙은 어떻게 되나요?
0
29
2
안녕하세요 선생님 질문있습니다.
0
22
0
Git Bash Winpty 설정
0
24
1
git 설치하기
0
29
1
서비스 기획 공부와 관련해서
0
23
1
수업자료의 깃허브 저장소가 없는데요..
0
35
1
진도율 확인 요청
0
36
1
개인 블로그에 정리하면서 ppt 자료 캡처 해서 넣어도 되나요?
1
32
2
상세 설정까지 이해하시는 비결이 궁금합니다
1
78
2
아무 수정도 안하고 주어진 소스로 그대로 했는데 패스워드 에러가 남
0
93
1
처음 실행 시 계속 패스워드가 틀리다고 나옴. 수정하고 해도 마찬가지임
1
110
2

