민프

[Docker] 4. Docker 이미지 작성 및 코드 실행 하기 (Python기준) 본문

[Docker]

[Docker] 4. Docker 이미지 작성 및 코드 실행 하기 (Python기준)

민프야 2023. 4. 18. 16:43

한 폴더 안에 아래 사진과 같이 main.py, Dockerfile, requirements.txt 를 만든다

requirements.txt는 어떤 패키지, 라이브러리를 몇 버전으로 사용할 지 입력하는 파일이고,

Dockerfile은 Docker 이미지를 생성하기 위한 설정파일로써 어떻게 이미지를 생성 할 것 인지 입력해놓으면 된다.

 

예시 코드이다.

requirements.txt

python-telegram-bot == 13.7

 

Dockerfile


FROM python:3.9.16

# 작업 디렉토리를 /app으로 설정합니다.[Docker 컨테이너 내부에서의 작업 디렉토리]
WORKDIR /app

# 현재 디렉토리의 파일을 모두 /app으로 복사합니다.[현재 내 컴퓨터의 작업 디렉토리 -> Docker 컨테이너 내부에서의 작업 디렉토리]
COPY . /app

RUN pip install -r requirements.txt

VOLUME [ "/app" ]

# main.py를 실행합니다.
CMD ["python", "main.py"]

이렇게 넣으면 된다. 

도커파일을 작성하는 방법은 FROM, WORKDIR.. 처럼 키워드마다 역할이 있으니 참고해서 넣으면 될 것 같다.

여기에서 VOLUME은 컨테이너와 호스트 간의 데이터 공류를 위한 디렉토리 파일이다. 

컨테이너가 삭제되더라도 호스트와 공유하는 데이터가 볼륨에 저장되어 있으면, 해당 데이터는 삭제되지 않고 보존된다. 또한, 여러개의 컨테이너가 동일한 볼륨을 공유할 수 있어서 컨테이너 간 데이터 공유가 용이하다

 

위 와 같이 파일별 코드를 작성하고 이미지를 만들자

docker build -t pythontest .

이미지를 만들었으면 컨테이너를 실행시켜보자

docker run -it -v hostDirectory:/app my pythontest

 

run 뒤에 -it -v 옵션을 주었는데 이것은 호스트 디렉토리와 컨테이너 내부의 /app 디렉토리가 연결되어, 호스트에서 코드를 수정하면 컨테이너에서도 실시간으로 코드가 적용되게 할 수 있다. 

 

이렇게 하게 되면 내가 원하는 이미지파일과 코드 수정까지 할 수 있게 된다. 

Comments