Dockerfile의 요소 탐색

완료됨

Dockerfile은 Docker 이미지를 빌드하는 데 사용되는 일련의 명령이 포함된 스크립트입니다. Dockerfiles에는 일반적으로 다음 정보가 포함됩니다.

  • 새 이미지를 만드는 데 사용하는 기본 또는 부모 이미지
  • 기본 OS를 업데이트하고 다른 소프트웨어를 설치하는 명령
  • 개발된 애플리케이션과 같이 포함할 빌드 아티팩트
  • 스토리지 및 네트워크 구성과 같이 공개할 서비스
  • 컨테이너가 시작될 때 실행할 명령

Dockerfile 만들기

Dockerfile을 만드는 첫 번째 단계는 애플리케이션의 기초 역할을 하는 기본 이미지를 선택하는 것입니다. 예를 들어 .NET 애플리케이션을 빌드하는 경우 기본적으로 Microsoft .NET 이미지를 선택할 수 있습니다.

# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0

# Set the working directory to /app
WORKDIR /app

# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .

# Expose port 80 to the outside world
EXPOSE 80

# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]

각 줄을 통해 수행되는 작업을 살펴보겠습니다.

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: 이 명령은 .NET 6 앱을 실행하는 데 필요한 .NET 6 런타임으로 기본 이미지를 설정합니다.
  • WORKDIR /app: 작업 디렉터리를 /app로 설정합니다. 여기서 앱 파일이 복사됩니다.
  • COPY bin/Release/net6.0/publish/ .: 게시된 앱의 내용을 컨테이너의 /app 디렉터리에 복사합니다. .NET 6 앱은 빌드되어 bin/Release/net6.0/publish 디렉터리에 게시된다고 가정합니다.
  • EXPOSE 80: 기본 HTTP 포트인 포트 80을 외부 환경에 노출합니다. 앱이 다른 포트에서 수신 대기하는 경우 이에 따라 이 줄을 변경합니다.
  • CMD ["dotnet", "MyApp.dll"]: 컨테이너가 시작될 때 실행할 명령입니다. 이 경우 앱의 DLL 파일(MyApp.dll)의 이름으로 dotnet 명령을 실행합니다. 앱 이름 및 진입점과 일치하도록 이 줄을 변경합니다.

Dockerfile 파일 사양은 다루지 않겠습니다. 자세한 내용은 Dockerfile 참조를 방문하세요. 이러한 각 단계는 마지막 컨테이너 이미지를 빌드할 때 캐시된 컨테이너 이미지를 만듭니다. 이 임시 이미지는 이전 이미지 위에 계층화되고 모든 단계가 완료된 후 단일 이미지로 제공됩니다.

리소스