중요한거

  1. Jenkins GitLab Trigger regax 설정하기

오늘할거

  1. docker compose 파일 git tracking 여부 조사
    1. 코치님들께 여쭤보기
    2. DockerFile 변경에 대응 필요하므로, Docker-Compose 파일도 git에서 관리되어야 한다.
  2. frontend container 생성을 위해 node js 버전 확인 O
  3. webrtc 멀티세션 연결 테스트
  4. Docker 배포준비 해야함
    1. DockerFile의 필요성
      1. 소스코드가 버전관리 되듯이, 인프라도 버전이 변경될 수 있다. 이러한 정보를 DockerFile에 입력필요 및 이미지화한다.
      2. required - docker compose로 관리가능하지만, 이미지화는 필요
    2. Docker Hub의 필요성
      1. DockerFile로 생성된 이미지를 각 버전별로 관리 가능, 공유 가능 (GitHub)
      2. not required
    3. DockerCompose 와의 관계
      1. DockerCompose는 DockerFile로 생성된 이미지를 컨테이너화 하는데 사용된다. 다만, 한 서버에서 여러개의 컨테이너를 띄워야 할 경우 Docker run 스크립트를 많이 작성해야 하는데, 이 부분을 DockerCompose 파일을 통해 간단하게 실행할 수 있게 한다.

docker buildx build --platform linux/amd64,linux/arm64 -t $imageName:$BUILD_NUMBER --push ."

로컬에서 생성한 docker image는 바로 사용가능하다.

jenkins에서 생성한 로컬 docker image는 서버로 이동 후 compose에서 pull 해서 사용할 수 없다.

→ Docker Hub가 있어야 한다…

environment { backImageName = "gogoadl247/spoparty-backend" frontImageName = "gogoadl247/spoparty-frontend" nginxImageName = "gogoadl247/spoparty-nginx" registryCredential = 'spoparty-docker' releaseServerAccount = 'ubuntu' releaseServerUri = 'i10a802.p.ssafy.io' }

stage('Image Build & DockerHub Push') { steps { dir('backend') { script { docker.withRegistry('', registryCredential) { sh "docker buildx create --use --name spoparty-builder" sh "docker buildx build --platform linux/amd64,linux/arm64 -t $backImageName:$BUILD_NUMBER --push ." sh "docker buildx build --platform linux/amd64,linux/arm64 -t $backImageName:latest --push ." } } } } } stage('Before Service Stop') { steps { sshagent(credentials: ['ubuntu-a802']) { sh ''' if test "ssh -o StrictHostKeyChecking=no $releaseServerAccount@$releaseServerUri "docker ps -aq --filter ancestor=$backImageName:latest""; then ssh -o StrictHostKeyChecking=no $releaseServerAccount@$releaseServerUri "docker-compose down” fi ''' } } } stage('DockerHub Pull') { steps { sshagent(credentials: ['ubuntu-a802']) { sh "ssh -o StrictHostKeyChecking=no $releaseServerAccount@$releaseServerUri 'sudo docker pull $backImageName:latest'" } } } stage('Service Start') { steps { sshagent(credentials: ['ubuntu-a802']) { sh ''' ssh -o StrictHostKeyChecking=no $releaseServerAccount@$releaseServerUri "sudo docker-compose up" ''' } } }