isPowerfulBlog

[Docker] Dockerfile, 이미지 빌드 및 컨테이너 실행 본문

Infra

[Docker] Dockerfile, 이미지 빌드 및 컨테이너 실행

왕밤빵도라에몽 2024. 3. 24. 19:56

오랜만에 다시 도커를 직접 쓸 일이 생기면서.. 간단한 명령어와 도커파일에 대해 정리하게 되었다.
(모든 인프라가 구축되어있는 상황에서 작업하다가 오랜만에 해보려니 ㅎㅎ..ㅎ.ㅎ..ㅠㅠ기본 명령어도 기억 안 남)

이미지 빌드

docker build -t {image_name} {app_path}
  • app_path는 이미지로 말고싶은 스크립트들이 있는 경로이다.
  • 보통 Dockerfile을 app 폴더 내의 루트 경로에 작성하고
    docker build -t {image_name} . 이런 식으로 하면 이 폴더 내의 모든 스크립트들이 이미지로 싸악 말린다.

컨테이너 실행

docker run -p 8000:8000 --name {container_name} {image_name}
  • -p 옵션으로 포트포워딩을 해줄 수 있다.
    나의 이 FastAPI앱을 로컬에서 실행했었을 때는 http://127.0.0.1:8000 이런식으로 로컬호스트의 8000번 포트에서 앱을 실행했다.
    이걸 도커에서 실행하면 도커 내의 로컬호스트의 8000번 포트에서 실행이 된다.
    나는 찐 내 데스크탑 로컬호스트에서 도커 내 로컬호스트의 포트 8000번에 접근하고 싶은거다.
    그래서 내 로컬호스트의 8000번 포트를 도커 내 로컬호스트의 포트 8000번으로 연결해주세요 하는게 저 포트포워딩이다.
    고럼 내 로컬호스트 8000번으로 접속하면 -> 도커 내 로컬호스트 포트 8000번으로 감.
  • --name 옵션으로 컨테이너의 이름을 지정해준다. (필수 아님)

Dockerfile

# Use the official Python image as a base
FROM python:3.9

# Set the working directory in the container
WORKDIR /

# Copy the current directory contents into the container at /app
COPY . /app

# Copy requirements.txt separately and install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt

# Set environment variables
ENV OPEN_API_KEY=''

# Expose the port that uvicorn will run on
EXPOSE 8000

# Command to run uvicorn with auto-reload
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]