실습
실행 과정
- 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
- 테스트 수행
- Docker Image 빌드
- 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 |