docker

docker-compose.yml & jenkins

ayleeee 2024. 3. 22. 02:58
# docker-compose.yml

version: "3"
services:
 echo:
  image: example/echo:latest
  ports:
    - 9000:8000

 

version: "3" => 파일의 내용을 해석하는 데 필요한 문법 버전

services 요소 아래의 echo => 컨테이너 이름 image => 어떤 이미지를 실행할 것인지, ports => 포트 포워딩

 

docker-compose.yml 을 사용하면 기존 docker 명령을 사용해 컨테이너를 실행할 때 매번 부여하던 옵션을 설정 파일로 관리할 수 있음

관리 기능의 진가는 여러 컨테이너를 실행할 때 발휘 됨.

 


Jenkins - CI/CD 기능을 제공하는 서버 어플리케이션

* CI/CD - 지속적 통합 및 제공/배포를 의미, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것이 목표

CI (Continuous Integration) : 코드 변경 사항을 공유 소스 코드 리포지토리에 자동으로 자주 통합하는 사례

CD (Continuous Delivery/Deployment) : 코드 변경 사항의 통합, 테스트, 제공을 나타내는 프로세스

출처 : https://www.redhat.com/ko/topics/devops/what-is-ci-cd 

 

CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이

CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.

www.redhat.com

 

 

version: "3"
services:
  master:
    container_name: master
    image: jenkinsci/jenkins:2.142-slim
    ports:
      - "8080:8080"
    volumes:
      - ./jenkins_home:/var/jenkins_home

 

책에서 시키는 대로 작성하고 docker-compose up을 실행했는데 작동하지 않았다.

=> brew install cask docker-compose 

 

다시 시도해 보았지만 결과는 이랬다.

error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH, out: ``

해결 방법 : https://stackoverflow.com/questions/65896681/exec-docker-credential-desktop-exe-executable-file-not-found-in-path

 

exec: "docker-credential-desktop.exe": executable file not found in $PATH

I got this error during docker build: => ERROR [internal] load metadata for docker.io/library/ubuntu:18.04 ...

stackoverflow.com

 

한 마디로 요약 하면

~/.docker/config.json 여기서  `credsStore`-> `credStore` 변경하면 된다.

 

고치고 나니까 작동 잘 되어서 이어서 작업했다.

 


젠킨스 접속은 성공했는데 플러그인 다운로드에 실패. 진짜 다 빨간불이 떠서 로그를 읽어봤다.

 

! master The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

 

해결방법 : platform을 명시한다.

version: '3.8'
services:
  master:
    container_name: master
    image: jenkins/jenkins:lts
    platform: linux/amd64  
    ports:
      - 8080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home

 

플랫폼을 명시함과 동시에 더 이상 젠킨스에 접근할 수가 없어서 image와 version 을 바꾸었다. 


젠킨스 운영시 단일 서버로 운영하는 경우는 흔치 않음.

관리 기능이나 작업 실행 지시 -> 마스터 인스턴스

실제 진행 -> 슬레이브 인스턴스

 

마스터와 슬레이브가 소통하기 위해서 마스터 컨테이너에서 SSH 키 생성