학습주제
도커 이미지를 빌드/푸시를 구현해보자.
학습내용
도커파일이 있어야 함.
push PR이 있는 경우, DOCKER image를 만들고 hub로 푸시
하나의 리포에 다수의 워크플로우 존재.
workflow/yml 형태
이 탬플릿을 사용해볼 것임.
추천에 뜸
뭔가 심플하다
3가지 스텝을 편집
docker login
러너라고 해서 깃헙이 만들어진 서버 위에서 작업이 돌아감. 로그인 정보 모름. 도커 허브 썼던것처럼 세팅해줘야함.
yml 파일에 하드코딩을 하게되면 깃헙 리포가 노출이되면 좋은 방법이 아님. 깃헙 내에 이런 정보를 저장할수 있는 키벨류 스토리지가 있음.
등록을 해주면 yml 파일 안에서 환경변수 형태로 값에 엑세스 가능.
docker build
docker push
새로만든 이미지가 도커 허브에 업로드 될 것임
Settings로 이동해서
actions 들어가서
두개의 변수를 등록할 것임
DOCKER_USER
DOCKER_PASSWORD
yml 파일에서
달러 {{}} 이런식으로 접근 가능함.
New repository secret
이름과 값을 입력할 수 있음
두개 생성함
에어플로우 때 Variables로 API 만들었던거랑 유사함
yml 편집 화면으로 돌아와서
처음은 건드릴 필요 없고
아랫부분 건드리면 됨.
외부 환경변수는 ${{}} 로 가져오고
내부 변수 값은 $로 가져오는 것을 볼수 있음
run에서 각기 다른 방법으로 쓰는 것을 볼 수 있음. 다 사용가능
env:를 넣어 변수를 만들수도 있고 $DOCKER_USER
바로 ${{secrets.DOCKER_USER}}이렇게 써도 됨.
build 할 때 마지막 . 붙여서 현재 디렉토리 명시
액션은 run에. 일종의 커맨드 명령
내용을 바꾸거나 main 브랜치에 푸시하는순간 이 워크플로우도 실행시킬 예정
리포에 돌아가 빌드상황을 보여줌
앞서 만들어놓은 python app도 트리거 됨.
그럼 순서는?
마찬가지로 빌드 뜨고, 스텝이 뜰 것임.
리포 폴더에 보면 두개의 yml 파일이 생성될 것임.
이 두개를 편집해서 하나로 줄여볼 수도 있을 것임.
없앤거를 다른 곳에 넣으면 됨.
test -> docker image 식으로 만들어볼 수 있음.
새 워크플로우
docker image 검색
configure
steps 밑에
uses 아래를 복붙
steps는 로그인, 빌드, 푸쉬 있음
이거를 커밋 체인지. 메인 브랜치에 푸시
동시에 저 유저 패스워드 세팅을 해야함
settings로 이동
나도 아까 하면서 만들어 놨었음.
키벨류 형태로 집어넣으면 된다.
내가 방금 docker yml을 푸시했기 때문에 파이썬도 돌았고
새로운 도커 워크플로우도 돌았음
모든게 잘 끝남
도커 허브에가서 잘 빌드됐는지 보자.
이미지가 잘 push가 되었음.
다시 이걸 터미널에서 실행해본다
docker image rm -f 이미지ID
만일 컨테이너가 돌아가면
docker stop 컨테이너id
웹에서 다운받아서 돌려본다
docker pull kjw9684k/hangman