끝까지한다
271
2021-03-15 11:50:36
7
453

[Docker] Docker compose 파일 실행에 대한 질문드립니다.


안녕하세요 docker 관련 공부중인 사람입니다.


혹시 docker-compose.yml 을 사용하여 컨테이너를 빌드할때 

제가 생성된 컨테이너 안에있는 python 파일을 실행시키고 싶은데요

docker-compose의 command 옵션을 잘못파악한건지 실행시 

  no such file or directory: unknown 가 발생하고


# dokcer-compose config  명령어로 yml파일이 실행되는 순서를 파악해보면

해당 컨테이너가 생성되기전에 command 옵션을 먼저 실행한다는걸 알게되었습니다.


그러면 docker-composeyml 를 사용하여 컨테이너를 빌드할때

컨테이너가 생성되고 그 컨테이너 안의 pythoh 파일을 실행하게 작성하려면 어떻게 작성해야하는지

알려주시면 감사하겠습니다.


0
  • 답변 7

  • 기린그린그림
    675
    2021-03-15 12:14:55 작성 2021-03-15 12:15:55 수정됨
    Dockerfile을 생성하면 컨테이너에서 명령어 등의
    순차접근 하기가 쉬운데요

    1. yml에 build키워드 를 넣은 후 Dockerfile이 위치할
    경로를 설정합니다

    2. FROM키워드에 이미지 를 설정

    3. 실행할 명령어는 도커파일에 
    CMD나 RUN 또는ENTRYPOINT “쉘명령어”


  • 제타건담
    8k
    2021-03-15 13:12:47

    위의 댓글대로 했는데도 안되시면 일단 컨테이너가 실행은 되게끔 해준뒤에..컨테이너 내부로 들어가서 그 명령어가 제대로 실행되는지 확인을 해보세요..

  • 끝까지한다
    271
    2021-03-15 13:15:14

    @기린그린그림

    dockerFile로는 안해봤는데 그런 순서대로 진행하면 생성된 컨테이너에 대한 쉘명령어가 입력된다는거죠? 시도해보겠습니다 !

    @제타건담

    컨테이너 실행후 내부접속 후 py실행은 가능합니다. 근데 저는 이걸 하나의 프로세스로 끝내고싶어서요


  • 끝까지한다
    271
    2021-03-15 14:52:31

    docker-compose.yml에 

    build 옵션을 주고 Dockerfile 설정하고


    Dockerfile에는 CMD 옵션으로 ["python","/app/test.py"] 을 주었습니다.

    이렇게 셋팅후 #docker-compose up 을 하니 컨테이너는  생성은 잘 됐는데

    web을 담당하는 컨테이너에서 tomcat이 뜨기전에 python이 실행되버리는 바람에

    webserver 가 안뜨는 상황이 발생해서 이 방법으로는 안될것 같고

    pythoh도 컨테이너를 분리하던지 다른 방법을 찾아봐야할것같습니다.


     답변해주신분들 감사합니다.

  • 기린그린그림
    675
    2021-03-16 11:15:28

    CMD말고 ENTRYPOINT에 

    쉘스크립트 하나 만들어두고

    docker-entrypoint.sh

    쉘스크립트에서 ps -grep으로

    톰캣서버 뜰때까지 기다리다가 

    실행시키면 될것같습니다..


  • 끝까지한다
    271
    2021-03-23 09:11:21

    @기린그린그림

    혹시 ps -grep로 톰캣이 뜰때까지 기다린다는게 어떤건지 알려주실 수 있으신가요?

  • 기린그린그림
    675
    2021-03-23 17:46:09


    while 루프안에서 sleep으로 1초마다 루프돌게하고

    ps grep으로 서버 포트열려있는지 확인하란 말이였어요

    포트열리면 루프 나와서 파이썬 실행시키면 되겠네요

    우선 당장생각나는건 이러한 방법이고

    뭐 인터넷 뒤져보면 더 좋은 방법도 많이 있을거같아요

  • 로그인을 하시면 답변을 등록할 수 있습니다.