docker-compose를 사용하여 개발 환경에서 Jenkins를 움직일 수있게했을 때의 트러슈

↓를 참고로 핸즈 온 해 보았을 때에 넘어졌던 포인트를 정리했습니다.

docker-compose를 사용하여 개발 환경에서 jenkins를 실행할 수 있도록 허용

/var/jenkins_home의 권한 오류



docker-compose.yml
version: "3"
services:
  master:
    container_name: master
    image: jenkins:latest
    ports:
      - 18080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home

docker-compose.yml을 위와 같이 쓰면 docker-compose up
master | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
master | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

라는 오류 메시지가. ↓의 기사를 참고로 볼륨을 /var/lib/jenkins_home 로 했더니 퍼미션 에러는 일어나지 않게 되었습니다.
docker-compose permission denied: 헵포코 SE의 메모 메모

Jenkins 플러그인 설치 실패



무사 docker-compose up가 성공하고 Jenkins가 일어서 브라우저에서 액세스하여 설정을 완료하려고했지만,



이 유사.

조사한 결과, Matser에 사용한 이미지가 좋지 않은 모양.

Jenkins의 이미지에는 두 가지 유명한 것이 있으며 혼동하기 쉽습니다. jenkins와 jenkins/jenkins는 다른 이미지입니다.
전자는 docker 공식 이미지이며, 후자는 jenkins 팀이 유지 관리합니다.
공식 쪽이 좋다고 생각할지도 모릅니다만, 개발에는, 후자가 취급하기 쉽다고 생각합니다.

proxy 뒤에 Jenkins 플러그인을 설치할 때 오류 해결 (docker&windows)
image: jenkins/jenkins:latest로 다시 쓰고 플러그인을 다시 설치하는 것이 좋습니다.

Matser가 slave01을 인식하지 못함



Master의 준비가 완료되었으므로, 드디어 slave를 세워 소통시키려고 했습니다만, [신규 노드 작성]을 해도 ↓의 slave02와 같은 상태로...(이미지는 성공한 후의 것입니다)

로그를 보면 SSH 로그인 자체는 만들어진 것 같습니다만,
[SSH] Checking java version of /usr/local/java/bin/java
Couldn't figure out the Java version of /usr/local/java/bin/java
bash: /usr/local/java/bin/java: No such file or directory

처럼 Java 버전을 얻을 수없는 오류가 발생한 것 같습니다.

시험에 slave01 컨테이너에 들어가 확인해 보면,
$ sudo docker exec -it slave01 which java
/usr/local/openjdk-8/bin/java
$ sudo docker exec -it slave01 java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

그거, 취득할 수 있는···?

잠시 고민한 후 [신규 노드 작성]의 [인증 정보]에서 입력한 사용자 이름이 jenkins이었음을 기억하고 이번에는 jenkins 사용자로 slave01에 들어가면,
$ sudo docker exec -it slave01 su - jenkins
jenkins@9a5854980721:~$ java -version
-su: java: command not found
jenkins@9a5854980721:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Java 명령이 들어 있는 /usr/local/openjdk-8/binjenkins 사용자의 환경 변수 PATH에 들어 있지 않은 것이 판명되었습니다.
jenkins 사용자의 PATH를 변경하는 것보다 경로가있는 디렉토리에 /usr/local/openjdk-8/bin/java의 심볼릭 링크를 넣는 것이 좋은 것으로 밝혀졌습니다. 1 에 ↓ docker-compose.yml 를 놓고 Dockerfile 도 다시 썼습니다. (Dockerfile 쓰지 않고 할 수 있는 방법이 있으면 가르쳐 주었으면 합니다)
FROM jenkinsci/ssh-slave
RUN ln -s /usr/local/openjdk-8/bin/java /usr/local/bin/java

docker-compose.yml
version: "3"
services:
  master:
    container_name: master
    image: jenkins/jenkins:latest
    ports:
      - 18080:8080
    volumes:
      - ./jenkins_home:/var/lib/jenkins_home
    links:
      - slave01

  slave01:
    container_name: slave01
    build: .
    environment:
      - JENKINS_SLAVE_SSH_PUBKEY=ssh-rsa AAAA...

이제 docker-compose.yml를 실행하면,
$ docker-compose up -d
Recreating slave01 ... done
Recreating master  ... done
$ docker-compose ps
 Name                Command               State                 Ports               
-------------------------------------------------------------------------------------
master    /sbin/tini -- /usr/local/b ...   Up      50000/tcp, 0.0.0.0:18080->8080/tcp
slave01   setup-sshd                       Up      22/tcp 

제대로 일어나고 있습니다. 그 후 잘 소통시킨 것은 위에 붙인 스쿠쇼대로입니다.

감상



어쨌든 있었지만, 역시 Docker Compose는 편리하다고 생각했습니다.



htps : // 일단 s. 지 킨 킨 -. rg/b로w세/지킨킨 S-18767? 후쿠세세 d코멘치 d=313660&파게=코m. 아 t ぁしあん. 지라. pㅅ긴. sys m. 이스에타 b 파네 ls : 코멘 t - b 파네 l # 코멘 t - 313660 

좋은 웹페이지 즐겨찾기