안녕하세요.
github에서 push하면 docker hub에서 이미지 자동으로 빌드하게 만드는 글입니다.
자동으로 이미지 빌드하면 뭐가 좋은가?
도커 환경일 경우에 좋습니다!
적어도 한 사이클마다 작업이 줄어들 수 있습니다.
1. aws와 gcp를 같이 배포할 일이 있다고 가정하였습니다.
한 리전에서 여러 인스턴스를 운영하는 상황이어도 위 내용과 같습니다.
2. nginx 하나씩 운영한다고 가정하고, 컨테이너를 매우 low하게 사용한다고 가정하였습니다.
3. 서버에 접속해서 vim으로 소스코드를 작성하는 상황은 배제하였습니다.
4. 도커를 사용하는 것을 가정하였습니다.
nginx 소스를 cp하는 행위를 포함하는건 너무하니까요.. 물론 jenkins 같은 CI / CD가 기본이라고 생각합니다.
이때 작업의 흐름입니다.
- 소스코드를 작성하고 github나 형상관리를 통해 소스 업로드
- 인스턴스에 접속
- git source pull
- docker image build
- docker run
자동 빌드를 한다면
- 소스코드를 형상관리 업로드
- docker hub에서 git push trigger를 확인하고 build
- 각 인스턴스에 접속
git source pulldocker build- docker run
위 흐름으로 인스턴스 당 명령어 두 번씩 줄어들었다고 해석할 수 있습니다.
n 번의 작업이 줄어드는 현상은 엄청 크다고 생각합니다.
auto build를 하기 위해 필요한 것
- docker hub 계정
- github 계정
- 배포할 app
github file의 구조
- docs: nginx에 배포될 front source
- Dockerfile: 자동 빌드할 Dockerfile
- nginx.conf: nginx의 config 파일
Dockerfile
FROM nginx
COPY docs /usr/share/nginx/html/learning-vuejs
COPY nginx.conf /etc/nginx/nginx.conf
create repository docker hub
도커 허브에서 create repository 누르시고
이미지를 생성하면서 build 설정을 할 수 있습니다.
- 현재 글이 github 기준입니다. bitbucket도 github와 크게 다르지 않습니다.
- github 계정과 연동하시면 github의 repository 정보를 가져올 수 있습니다.
- 감시할 branch는 master로 설정하였습니다.
create & build
최종 결과입니다.
이미지를 생성하면 바로 build를 합니다.
이제 서버에 접근해서 pull / docker run을 실행하면 업데이트된 컨테이너가 실행됩니다!
github에서 push하기
master에서 push를 하면 아래와 같이 build가 생성됩니다.
서버에서 실행
현재 GCP에서 띄워서 사용하고 있는 상태라 서버에서 실행한 결과입니다.
컨테이너가 편해서 데모 서버를 만들어도 이렇게 배포하게 되었습니다.
새해 복 많이 받으시고 즐거운 코딩이 되었으면 좋겠네요!
감사합니다.
관련글
nuxt.js 이미지 빌드하기
2021/01/01 - [Docker] - nuxt.js in Dockerfile to hub.docker
learning-vuejs 저장소
https://github.com/wiv33/learning-vuejs
aws s3에 이미지 저장
https://github.com/wiv33/aws-s3-file-upload
'Docker' 카테고리의 다른 글
docker remove with cache on mac - reinstall (0) | 2022.11.06 |
---|---|
unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info": dial unix /var/run/docker.sock: connect: permission denied (0) | 2021.01.24 |
docker compose version 파라미터화 (0) | 2021.01.15 |
nuxt docker hub에 배포하기 - nginx (0) | 2021.01.01 |