Docker - 2

이영준·2024년 5월 29일
post-thumbnail

web service를 docker로 실행

Hangman web service를 github를 통해 docker image로 docker hub에 upload

사전 준비

전체 과정

  • hangman_web이라는 repo의 main에 code가 merge될 때 마다 다음을 수행함
    • 테스트 수행
    • docker image 빌드
      • 이를 위해 docker file 생성 필요
    • docker image를 docker hub로 푸시

hangman program

  • hangmang 프로그램을 flask를 사용하여 웹으로 노출
    • 포트번호는 어디든 바인딩 가능하며 실행할 때 지정
    • flask 관련 모듈 설치 필요

실행 방법

  • python3 -m flask run --host=0.0.0.0 --port=4000
    • 이 경우 app.py를 기본으로 사용

Repo 구성

  • app.py
    • flask의 메인 함수가 있고 커맨드라인으로 받은 포트에 바인드하고 요청이 들어오기를 기다림
  • requirements.txt
    • pip install -r requirements.txt
    • 이는 flask 모듈들을 설치함
  • test.py
    • app.py에 있는 코드의 유닛 테스트 로직이 들어가 있음. CI/CD 구성 시 실행이 되게 구성할 예정

실습 - 테스트

https://labs.play-with-docker.com/
여기서 가상서버 띄우기

  • git clone

  • 설치하기

실습 - 서비스를 docker image로 구성하기

앞서 살펴본 hangman 서비스를 docker image로 만들고 docker hub에 올리고자 함.

왜 image로 구성하려고 하는가?

  • docker 컨테이너 내부 프로세스가 오픈한 포트번호는 바깥 프로세스에서는 접근할 수 없음. (host process 브라우저에게는 안보임)

세팅 방법

  • docker run 수행시 -p 옵션 사용
    • docker run -p 4000:4000 image_name
  • mapping 하는 것 (port mapping)
  • docker 컨테이너를 실행할 때 포트 맵핑을 통해 호스트 운영체제 단에서 접근되는 포트를 컨테이너쪽에서 포워드 해줘야함.

image build

  • docker build -t papalio/hangman .

  • 이미지 정상 생성.

docker 컨테이너 실행

  • 포트 포워딩 고려
  • docker run -p 4000:4000 papalio/hangman

docker hub push

  • docker login
  • docker push dockerhub_accountID/hangman

결과

잘 올라갔다.

profile
개인공부용(업데이트 중단)

0개의 댓글