반응형
회사에서 젠킨스를 이용해서 자동 배포환경을 구축하는 과정에서 젠킨스에서 도커의 -it 옵션때문에 쉘스립트를 이용해서 도커를 실행하도록 작업하였습니다.
(tty에러가 나는데 그건 도커 bash는 interactive하게 클라이언트와 통신을 해야하기 때문에 발생한다고 한다.)
핵심은 -dit 옵션이고 -d옵션이 데몬을 의미하며 백그라운드로 실행되게 하는 옵션이다.
저렇게하면 도커를 실행해도 도커 내부 bash로 진입하지 않는다.
그리고 docker exec를 이용해서 도커 내부 bash에 명령어를 실행하도록 작업하여 도커 컨테이너 내부에 DB와 웹서버를 실행하도록 스크립트를 작성하였다.
#!/bin/bash
docker stop [DOCKER_NAME] 2>/dev/null
docker rm [DOCKER_NAME] 2>/dev/null
docker run -dit -p 8081:8081 -p 27017:27017 --name ds_ml -v mongodb:/data/db [DOCKER_NAME]:latest
docker exec [DOCKER_NAME] bash -c "source ~/.bashrc && conda activate myenv && mongod --bind_ip 0.0.0.0 --port 27017 --dbpath /data/db &"
docker exec [DOCKER_NAME] bash -c "source ~/.bashrc && conda activate myenv && uvicorn main:app --host 0.0.0.0 --port 8081 > /var/log/uvicorn.log 2>&1"
728x90
'[개발관련] > 도커(Docker)' 카테고리의 다른 글
도커 이미지 파일 불러오기 (0) | 2021.02.19 |
---|---|
도커 이미지 파일로 내보내기 (0) | 2021.02.19 |
스프링부트 패키지 도커 허브에 push하기 (0) | 2021.02.18 |
스프링부트 패키지 도커이미지 만들기 (0) | 2021.02.18 |