Docker 실습

김명주·2025년 1월 22일
0

Docker 용어

Dockerfile

Dockerfile은 Docker 이미지를 생성하기 위한 텍스트 파일이다.
이 파일에는 이미지를 구축하는데 필요한 모든 명령이 포함되어 있다.

Container Image

컨테이너 이미지는 애플리케이션과 그 의존성을 포함하는 실행 가능한 패키지다.
Dockerfile을 기반으로 생성되며 컨테이너를 실행하는 데 필요한 모든 것을 포함한다.

Container Runtime

실행이 된 컨테이너는 컨테이너 런타임을 통해 프로세스로 실행된다.

FastAPI와 Docker 실습

1. FastAPI 코드 작성

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}"}

2. Dockerfile 작성

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"]

3. Docker 이미지 빌드

쉘에서 다음 명령을 실행하여 Docker 이미지를 빌드한다.

  • -t my-app : 이미지에 태그를 지정. 여기서는 my-app이라는 이름으로 이미지를 태그
  • . : 현재 디렉터리에 있는 Dockerfile을 사용하여 이미지를 빌드하라는 의미.
docker build -t my-app .

4. Docker 컨테이너 실행

빌드된 이미지를 사용하여 Docker 컨테이너를 실행한다.

  • -d : 데몬 모드로 컨테이너를 실행한다. 즉 백그라운드에서 실행된다.
  • -p 8000:8000 : 포트 매핑을 설정한다. 호스트의 8000번 포트를 컨테이너의 8000번 포트와 연결한다.
  • my-app : 실행할 Docker 이미지의 이름이다. 이전 단계에서 빌드한 이미지 이름을 사용한다.
docker run -d -p 8000:8000 my-app

5. 애플리케이션 테스트

curl 명령을 사용하여 api 테스트가 가능하다.

curl http://localhost:8000/
curl http://localhost:8000/echo/fastcampus
profile
개발자를 향해 달리는 사람

0개의 댓글