전공영역 공부 기록

젠킨스 컨테이너에서 파이썬 도커 컨테이너 실행

악분 2022. 6. 18. 00:38
반응형

안녕하세요. 이 글은 젠킨스 컨테이너에서 파이썬 도커 컨테이너 실행하는 방법을 설명합니다.

 

굳이 왜 파이썬을 도커 컨테이너로 실행?

젠킨스 컨테이너에서 파이썬을 실행하는 방법은 총 3개입니다. 3가지 방법 중에 검토한 결과 컨테이너 실행방법이 매우 관리하기 좋다고 판단하여 선택했습니다.

 

① 젠킨스 컨테이너 운영체제에 파이썬 설치

운영체제에 직접 파이썬을 설치해서 사용하는 방법입니다. 이 방법은 매우 간단하지만, 버전 관리하기 어렵고 컨테이너 이미지가 증가하는 단점이 있습니다.

 

② 젠킨스 플러그인 pyenv사용

플러그인 설치도 쉽고 파이썬 버전별로 관리하기도 쉽습니다. 하지만, 플러그인 버전을 관리해야 하는 단점이 있습니다.

 

③ 컨테이너 실행

도커엔진 등을 이용하여 컨테이너로 파이썬을 실행하는 방법입니다. 버전관리도 쉽고 컨테이너 이미지 관리도 쉽습니다. 단점은 컨테이너를 실행, 종료하는 오버헤드가 발생합니다.

 

2. 실행방법

공식문서[1]에서 소개하는 것처럼 도커 플러그인을 사용하면 쉽게 파이썬 도커 컨테이너를 실행할 수 있습니다.

pipeline {
    agent none 
    stages {
        stage('Build') { 
            agent {
                docker {
                    image 'python:2-alpine' 
                }
            }
            steps {
                sh 'python -m py_compile sources/add2vals.py sources/calc.py' 
                stash(name: 'compiled-results', includes: 'sources/*.py*') 
            }
        }
    }
}

 

3. 젠킨스 컨테이너 실행시 오류내용

하지만 젠킨스를 컨테이너로 실행하고 있다면, 도커 플러그인이 의도한대로 동작하지 않아 데드락에 빠집니다. 데드락에 걸려서 제가 강제로 젠킨스 잡을 중지했습니다.

 

console 로그를 보니 마운트 설정이 노드 기준으로 되어 있어서 제대로 동작하지 않았습니다.

 

4. 오류 해결

마운트 설정이 오류라는 것을 해결했으니 마운트를 변경해야 하는데요. 공식문서를 참조했지만 찾지 못해서 docker 명령어를 직접 사용하여 오류를 해결했습니다. 젠킨스가 컨테이너가 마운트된 위치(아래 예제는 /mnt/data/jenkins)와 job workspace위치를 직접 마운트 했습니다. workspace는 젠킨스 환경변수를 활용했습니다.

pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                sh 'ls'
                sh """
                    docker run --rm -v /mnt/data/jenkins/workspace/$JOB_NAME:/tmp/$JOB_BASE_NAME python:3.9.1 ls /tmp/$JOB_BASE_NAME
                """
                sh 'echo done'
            }
        }
    }
}

 

실행 console로그는 아래 그림과 같습니다.

 

참고자료

 젠킨스 공식문서: https://www.jenkins.io/doc/tutorials/build-a-python-app-with-pyinstaller/

공백

 

반응형