>

히호

Jenkins 파이프 라인에서 Docker-Container를 빌드하고 실행하려고 시도한 후 컨테이너의 배포되지 않은 웹 응용 프로그램에서 몇 가지 테스트를 수행합니다. 문제는 컨테이너가 몇 초 동안 만 살아남은 다음 종료 코드 0으로 죽는 것입니다. 이미 Docker Groovy 플러그인을 사용하거나 사용하지 않고 대화식 모드로 실행하려고했습니다.

파이프 라인 코드는 다음과 같습니다 :

stage("Docker Build&Run") {
    steps {
        script {
            def tag = "shop:${env.BUILD_ID}"
            docker.build(tag)
            //sh "docker run -d -p 8443:443/tcp ${tag}" Tried both
            docker.image(tag).run('-p 8443:443/tcp')
        }
    }
}
stage("Dummy Dynamic Analysis") {
    steps {
        echo "Dummy Dynamic Analysis" //to be integrated
        sleep 120 //application should be available here since it has to be theire for  testing as well
    }
}

이벤트는 다음과 같습니다. 몇 초 후에 파괴됨 :

2018-11-07T17:27:30.104407703+01:00 image tag sha256:21ae4ef9603d390d0244cee30651485f2fb517a47c9e9d2c38855d093349105c (name=shop:35)
2018-11-07T17:27:31.260144894+01:00 container create ade7069d9d391146611f4f658156554823cc8086bd6769bbc32c3949d5b1a694 (image=shop:35, name=suspicious_liskov)
2018-11-07T17:27:31.456730373+01:00 network connect 36c2d6617773a7c7075caece71bcd744c89009b3db1962328d0f9930d981238a (container=ade7069d9d391146611f4f658156554823cc8086bd6769bbc32c3949d5b1a694, name=bridge, type=bridge)
2018-11-07T17:27:31.966564913+01:00 container start ade7069d9d391146611f4f658156554823cc8086bd6769bbc32c3949d5b1a694 (image=shop:35, name=suspicious_liskov)
2018-11-07T17:27:35.761690515+01:00 container die ade7069d9d391146611f4f658156554823cc8086bd6769bbc32c3949d5b1a694 (exitCode=0, image=shop:35, name=suspicious_liskov)
2018-11-07T17:27:35.929597196+01:00 network disconnect 36c2d6617773a7c7075caece71bcd744c89009b3db1962328d0f9930d981238a (container=ade7069d9d391146611f4f658156554823cc8086bd6769bbc32c3949d5b1a694, name=bridge, type=bridge)

Jenkins가 실행되는 동안 컨테이너를 배포하고 정지 할 때까지 또는 무제한으로 실행하도록하려면 어떻게해야합니까?

모두에게 감사합니다. 인사말

  • 답변 # 1

    따라서 도커 파일은 다음과 같이 보입니다 :

    FROM ubuntu:14.04
    RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
    ADD ./provision.sh /tmp/provision.sh
    RUN /bin/bash /tmp/provision.sh
    ENTRYPOINT service apache2 start && service mysql start && /bin/bash
    EXPOSE 443
    
    

    서비스를 시작한 후 Docker 컨테이너를 실행 상태로 유지하는 방법은 무엇입니까? 내 진입 점 호출이 완료되면 도커 컨테이너가 종료되고 서비스가 활성화되어있는 한 계속 살아 있지 않습니다. 내가 생각했던 것입니다. 나는 이제 감독자가 운영하는 제안 된 솔루션과 잘 운영되도록 전환했습니다. 모두 감사합니다.

    새로운 Dockerfile :

    FROM ubuntu:14.04
    RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
    RUN apt-get update && apt-get install supervisor -y
    ADD ./provision.sh /tmp/provision.sh
    ADD ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
    RUN /bin/bash /tmp/provision.sh
    ENTRYPOINT ["/usr/bin/supervisord", "-n"]
    EXPOSE 443
    
    

    관리자 회의 :

    [supervisord]
    nodaemon=true
    [program:mysql]
    command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/sbin/mysqld
    autorestart=true
    [program:apache]
    command=/usr/sbin/apache2ctl -DFOREGROUND
    autorestart=true
    
    

관련 자료

  • 이전 java - TreeMap 에서 단일 키를 업데이트하면 모든 키 값이 변경됩니다
  • 다음 CSS를 사용하여 아래쪽을 가리키는 오각형 모양 안의 텍스트