1. 문제상황
- Jenkins Pipeline에 Docker를 테스트하는 도중 Jenkins console에서 다음과 같이 docker: command not found로 도커의 명령어를 실행하지 못하였다.
- 도커가 Mac os에서 잡히지 않는듯 싶었다. 하지만 터미널로 실행하면 문제가 없었다.
+ docker --version
/var/root/.jenkins/workspace/Jenkins-test-dev@tmp/durable-b74c3577/script.sh.copy: line 1: docker: command not found
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build Docker Image)
Stage "Build Docker Image" skipped due to earlier failure(s)
[Pipeline] getContext
[Pipeline] }
2. 해결방안
- 원래 다른 아티클들을 읽다보면 리눅스 OS에선 다음과 같이 도커의 권한을 바꿔주는 명령어를 치라고 나온다.
sudo groupadd docker
sudo usermod -aG docker $USER
sudo newgrp docker
- 하지만 나는 Mac os에서 실행하였기 때문에 위에 명령어가 당연히 먹히지 않음
- 그러다가 서치중 아래의 글에서 똑같은 이슈를 찾았다.
위 글을 간단하게 요약하고, 해결책을 보자면
위와 같은 상황은 일반적인 오류이고, Jenkins 에이전트에 Docker가 설치되어 있지 않거나, Docker 실행 파일을 시스템 PATH에서 찾을 수 없을 때 Jenkins 파이프라인에서 발생한다.
해결하려면 다음과 같은 순서를 따르면 된다.
1. MacOs 에서 Jenkins 설치 디렉토리를 찾는다. 터미널을 열고 아래 명령 실행
brew --prefix jenkins
/opt/homebrew/opt/jenkins-lts
- brew를 통해 Jenkins를 설치한 경우 brew --접두사 Jenkins 명령어를 사용하면 디렉토리 경로가 제공된다.
2. 경로 /opt/homebrew/opt/jenkins-lts에 존재하는 ' homebrew.mxcl.jenkins-lts.plist ' 파일을 찾는다.
- homebrew.mxcl.jenkins-lts.plist 에서 위 글을 보면 강조된 글씨를 변경 하라고 알려준다.
- 나는 java와 .war경로는 바꾸지 않았고, 아래 부분만 변경하였다.
- Users/himanshubector 는 Users/[os자신의 계정정보]를 입력하면 된다.
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Docker.app/Contents/Resources/bin/:/Users/himanshubector/Library/Group\ Containers/group.com.docker/Applications/Docker.app/Contents/Resources/bin</string>
<?xml version=”1.0" encoding=”UTF-8"?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version=”1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.jenkins-lts</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/opt/openjdk@17/bin/java</string>
<string>-Dmail.smtp.starttls.enable=true</string>
<string>-jar</string>
<string>/opt/homebrew/opt/jenkins-lts/libexec/jenkins.war</string>
<string> — httpListenAddress=127.0.0.1</string>
<string> — httpPort=8080</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Docker.app/Contents/Resources/bin/:/Users/himanshubector/Library/Group\ Containers/group.com.docker/Applications/Docker.app/Contents/Resources/bin</string>
</dict>
</dict>
</plist>
3. homebrew.mxcl.jenkins-lts.plist 파일의 내용을 저장한 후 아래 brew 명령을 사용하여 jenkins를 다시 시작한다.
brew services restart jenkins-lts
4. Jenkins 파이프라인 빌드 재실행
- 만약 이 방법으로도 되지 않는다면, 도커를 실행한 계정 root or 자신이 설정한 유저, 젠킨스를 실행한 계정 이 둘을 맞춰주면 해결된다.
- 찾아보니 젠킨스 공식 홈페이지에서도 Macos 에서 실행과 관련한 내용을 적어두었다.
https://www.jenkins.io/doc/book/pipeline/docker/#path-setup-for-mac-os-users
'개발 > 오류기록' 카테고리의 다른 글
AWS EC2 프리티어 프론트엔드 빌드시 멈출 때 (0) | 2024.09.24 |
---|---|
React-activate 사용 중 'decorators-legacy' 오류 (0) | 2022.12.08 |
[Next.js] CORS 오류 해결방법, Next proxy 설정 (0) | 2022.11.30 |
[오류 기록] tomcat startup.sh 바로 꺼짐 문제 (0) | 2022.10.02 |
댓글