데브코스 TIL/Docker

Docker: Web Service 실행

예니ㅣ 2023. 12. 20. 12:41

실습

실행 과정

  • hangman_web repo 생성
  • Dockerfile 생성
FROM python:3.8-slim-buster
LABEL Maintainer="@gmail.com"
WORKDIR /app
COPY pp.py ./
RUN pip3 install -r requirements.txt
EXPOSE 4000
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0", "--port=4000"]
  • Main Merge 
    1. 테스트 수행
    2. Docker Image 빌드
    3. Docker Image를 Docker Hub로 푸시
  • Github repo에 Github Actions로 구현

 


Hangman 프로그램

flask를 사용하여 웹으로 노출합니다.

python으로 구성된 코드 입니다.

https://github.com/learndataeng/hangman_web

# https://labs.play-with-docker.com에서 실행

git clonehttps://github.com/learndataeng/hangman_web.git
pip3 install -r requirment.txt
python3 -m flask run --host=0.0.0.0  --port=4000

 


Docker Container 통신

port 번호를 알더라도 Docker Container 내부 프로세스와 호스트 프로세스 간의 통신은 불가능합니다.

 

Port Mapping은 Docker Container 내부 프로세스가 오픈한 포트번호를 외부로 노출해주는 것입니다.

docker run -p port_num:port_num image_name

 


Dockerization

docker inspect yeeeeeeen/hangman
docker run -p 4000:4000 -d yeeeeeeen/hangman

docker push yeeeeeeen/hangman

 

 


Github Actions

yml 혹은 yaml 파일은 환경 설정 파일에 사용됩니다.

 

CI Template : Python Application

import unittest
import app as hangman


class HangmanTestCase(unittest.TestCase):

    # def setUp(self):
    #

    # checkCorrectAnswer(correctLetters, secretWord)
    def test_checkCorrectAnswer(self):
        answer = hangman.checkCorrectAnswer("baon", "baboon")
        self.assertTrue(answer)

    def test_checkWrongAnswer(self):
        answer = hangman.checkWrongAnswer("zebrio", "zebra")
        self.assertTrue(answer)

    def test_1(self):
        answer = hangman.checkCorrectAnswer("bazn", "baboon")
        self.assertFalse(answer)

    def test_2(self):
        answer = hangman.checkCorrectAnswer("", " ")
        self.assertFalse(answer)

    def test_3(self):
        answer = hangman.checkCorrectAnswer("ZEBRA", "zebra")
        self.assertFalse(answer)


if __name__ == "__main__":
    unittest.main()

'데브코스 TIL > Docker' 카테고리의 다른 글

Docker Network  (0) 2023.12.21
Docker Volume  (0) 2023.12.21
Docker 명령  (0) 2023.12.21
Docker 기초 실습  (0) 2023.12.20
Docker 기초  (0) 2023.12.20