도커 컴포즈로 컨테이너 올리는걸 자동화하는 중인데 좋은 방법 없을까요?
현재 쉘 스크립트를 사용하여 도커 컴포즈로 컨테이너 올리는걸 자동화하려고합니다. 나중에는 휍훅으로 깃허브레포가 업데이트되면(1) 자동으로 컨테이너를 down 시키고(2) 깃허브 레포를 pull 해서 새로운 정보를 가져온 뒤(3) 다시 run 할 수 있도록 하고싶습니다.(4)
현재는 (4)에 해당하는 초기 작업을 하고있습니다. 일단 실행이 되어야 down도 시키고 이런저런 일도 하니까요. 그래서 현재 run.sh 스크립트의 작동 방식을 간략하게 표현하자면
1. 각 폴더에 docker-compose.yml 파일과 .env 생성 스크립트를 작성한다.
--> .env 생성 스크립트는 docker-compose.yml에 입력되면 안되는 비밀번호 등을 관리하기 위함입니다.
2. 각 폴더 안에 있는 .env 생성 스크립트를 사용하여 .env 파일을 생성한다. (없으면 실행 안함)
3. 각 폴더 안에 있는 docker-compose.yml 파일을 docker-compose -f ./각 폴더명/docker-compose.yml up -d 로 실행한다.
로 만들어져있습니다.
물론 다른 추가적인 스크립트도 있습니다. 버전을 저장해둔 스크립트라던가 DB의 ID/PW를 따로 저장해서 관리하는 스크립트도 있습니다.
사실 쿠버네티스를 사용하면 좋겠지만 아직 거기까지는 할 능력이 못된다고 생각되기도 하고 쉘 스크립트와 깃허브에 익숙해지고자 연습용으로 해보려고하는데 작동 방식에 관해서 조언을 해주실 수 있을까요?
로직은 깔끔한거같은데요? ㅎㅎ 몇가지는 사용자에게 입력받아서 config값에 넣어주시는거겠죠?
대부분은 함수형식으로 짜여진 .secret이라는 쉘 스크립트에서 각 컨테이너에 필요한 변수 값을 가져오도록 export 를 사용했습니다.(없으면 exit 하고 에러가 나면서 종료) 하지만 config 값을 수동으로 입력하는걸 짜는 도중에 나중에 자동화로 돌릴건데 굳이 그렇게 해야하나 싶은 생각이 들었습니다.
오호.. 완성작이 궁금합니다 ㅎ
그냥 도커이미지를 하나 만드셔서 cron 걸면 되지않을까 싶어요
도커 내부에 도커를 또 할 수는 없지 않나요? 어떻게 하는지 이해가 잘 안갑니다.
깃헙 앱을 도커로 패킹된 것을 최신으로 해주고 싶다면 이미지 자체에 그런기능을 넣으면 간단하지 않을까 싶었는데 깃헙이 단순 트리거로 쓰인다면 좀 다르겠네요.
어떤 뜻으로 말하신건지 알것같습니다. 하지만 말씀하신대로 레포가 업데이트되는걸 트리거로 사용하고 업데이트하는거라 조금 다른 것 같긴하네요. 도커 내부에 cron으로 거는건 좋은 것 같습니다. 웹훅 방식을 추가하기 전까지는 주기적으로 업데이트하는 방법도 좋을 것 같네요. 감사합니다.
cmt alert