Dockerfile은 Docker 이미지를 생성하기 위한 텍스트 파일이다.
이 파일에는 이미지를 구축하는데 필요한 모든 명령이 포함되어 있다.
컨테이너 이미지는 애플리케이션과 그 의존성을 포함하는 실행 가능한 패키지다.
Dockerfile을 기반으로 생성되며 컨테이너를 실행하는 데 필요한 모든 것을 포함한다.
실행이 된 컨테이너는 컨테이너 런타임을 통해 프로세스로 실행된다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/echo/{name}")
async def echo(name):
return {"message": f"Hello {name}"}
FROM python:3.12
WORKDIR /app
RUN pip install fastapi uvicorn
COPY main.py .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
쉘에서 다음 명령을 실행하여 Docker 이미지를 빌드한다.
-t my-app
: 이미지에 태그를 지정. 여기서는 my-app
이라는 이름으로 이미지를 태그.
: 현재 디렉터리에 있는 Dockerfile을 사용하여 이미지를 빌드하라는 의미.docker build -t my-app .
빌드된 이미지를 사용하여 Docker 컨테이너를 실행한다.
-d
: 데몬 모드로 컨테이너를 실행한다. 즉 백그라운드에서 실행된다.-p 8000:8000
: 포트 매핑을 설정한다. 호스트의 8000번 포트를 컨테이너의 8000번 포트와 연결한다.my-app
: 실행할 Docker 이미지의 이름이다. 이전 단계에서 빌드한 이미지 이름을 사용한다.docker run -d -p 8000:8000 my-app
curl 명령을 사용하여 api 테스트가 가능하다.
curl http://localhost:8000/
curl http://localhost:8000/echo/fastcampus