본문 바로가기

Python

Python application with Docker Image build and Run

반응형

- create python app - (app.py)

"""
샘플 app.py 에서는 아래 lib 가 필요 없으나, lib 설치 예시를 위해 작성 한것.
"""
import aiohttp
import yaml
from aiohttp import ClientSession
from bs4 import BeautifulSoup
import asyncio


def hello(_str):
    print(_str)

if __name__ == '__main__':
    hello("Hello! Docker")

- created requirements.txt

aiohttp==3.5.4
beautifulsoup4==4.7.1
PyYAML==5.1.1

- created Dockerfile - (DockerFile)

# 파이썬 3.7 이미지
FROM python:3.7

# Docker image 에서 작업을 수행할 디렉터리 설정
WORKDIR /app

# 작업 디렉터리로 설치될 라이브러리 파일 복사 
COPY requirements.txt /app/

# 라이브러리 파일 로부터 설치
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# 현재 디렉터리에 있는 파일들을 도커 이미지에 추가
# COPY 는 파일을 이미지에 추가, 압축 파일 해제 안함. URL 사용 불가.
# COPY 와 비슷한 ADD 의 경우 압축파일 해제 후 추가, URL 사용 가능
COPY . /app

#컨테이너안에서 실행 되어야 할 명령어 
#docker run --entrypoint 옵션 사용시 해당 옵션 무시된다.
ENTRYPOINT ["python"]

#컨테이너안에서 실행 되어야 할 파이썬 스크립트
#docker run 실행시 바로 명령어를 입력하는 경우 CMD 는 실행 되지 않는다.
CMD ["app.py"]

#CMD 의 명령어를 ENTRYPOINT 에 전달 하도록 구성

- create Docker ignore file (.dockerignore)

[도커 이미지 빌드시 ignore 처리할 파일 작성]

.venv
.vscode
.gitignore
README.md

- Docker image build

# hello 이미지로 현재 디렉토리를 빌드한다.
# . (dot) -> 현재 디렉터리를 의미
# -t: 이미지 명칭과 태그 지정하는 옵션 (생략할 경우 latest)
docker build -t hello:hello .

- Docker image run

Docker run hello:hello

 

반응형

'Python' 카테고리의 다른 글

Start Django project with Python DI manager poetry  (0) 2021.08.22
python data class  (0) 2020.01.19
python file line read and set  (0) 2019.06.15
pymongo usage  (0) 2019.06.08
Commands for Python with Git project  (0) 2019.02.10