지난 글에서 기능 구현을 마치고 로컬에서 테스트까지 마쳤었는데요.
평생 제 로컬에서 돌릴 수는 없는 노릇이니 도커를 이용하여 사내 서버에 배포하였는데 그 과정을 공유합니다.
도커 배포 준비하기
도커에 대하여
배포에 활용되는 도커라는 게 있다는 것은 인지하고 있었지만 실제로 사용해 보는 것은 이번이 처음이었는데요.
이직한 회사에서 도커를 사용하고 있어서 스터디겸 도커로 이미지를 만들어서 컨테이너로 배포해 보았습니다.
제가 개발하면서 이해한 도커는 아래와 같았어요.
- 간편하게 가상의 개발 환경을 구축해 준다.
- 배포에 적합하고 이후 유지보수 및 관리에 용이하다.
이렇게 간편하고 좋은 것을 이제야 활용하다니 아쉽다는 생각이 들었습니다ㅋㅋ (사실 앱 개발자라 쓸 일이 없긴 했죠)
도커 설치하기
저는 맥 환경이라 brew를 통해 간단하게 설치하였습니다.
brew install --cask docker
제가 좋아하는 "딸깍"... 명령어 한 줄로 도커 설치는 끝입니다.
설치가 완료되면 Docker.app이 생겨요. (GUI도 제공하다니... 정말 chill하다....)
도커 빌드 & 배포하기
도커 이미지 빌드하기
FROM python:3.9.6
ENV TZ=Asia/Seoul
WORKDIR /automation
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ✅ 한국 시간 설정 추가
RUN apt-get update && apt-get install -y tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
COPY . .
CMD ["python", "-m", "src.app.main.meeting_scheduler"]
프로젝트 최상단에 `Dockerfile`을 생성하여 도커 배포를 위한 초기화를 진행해 주었습니다.
위 코드를 풀어보면,
python 3.9.6 버전으로 개발 환경을 구성하고 working directory는 automation이다.
requirements.txt 파일에 명시된 라이브러리를 pip install 하여 다운로드한다.
소스 코드는 전체를 복사하여 automation에 들어간다.
마지막으로 src.app.main 경로의 meeting_scheduler를 실행시킨다.
`requirements.txt`에는 프로젝트에서 사용하고 있는 라이브러리들을 입력한 파일입니다.
파이썬에서는 이 파일에 필요 라이브러리를 입력해 두고 pip install을 통해 필요 라이브러리를 받더라구요.
node로 치면 package.json과 npm install, android로 치면 gradle과 build, iOS로 치면 pod과 pod install 인 셈이죠.
docker build -t notion-automation
- -t는 tag입니다. notion-automation으로 이름을 만들어주었습니다.
docker images
- 빌드된 이미지는 명령어로 조회하거나 Docker 앱에서 확인 가능합니다.
도커 배포하기
docker run -d notion-automation
- -d는 detached입니다. 백그라운드로 이미지를 실행할 것을 의미합니다.
도커 로그 확인하기
docker logs -f notion-automaion
- -f는 follow, 실시간 로그입니다.
- 백그라운드로 실행한 뒤에도 위 명령어로 로그 확인이 가능합니다.
물론 삽질 과정이 조금 있긴 했습니다만 이렇게 하면 빌드와 배포까지 끝납니다... 놀랍도록 쉽고 간편하지 않나요?
다음 글에서는 main branch에 push 하면 자동 배포 파이프라인을 추가하는 방법을 공유하겠습니다.