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 참조를 방문하세요. 이러한 각 단계는 마지막 컨테이너 이미지를 빌드할 때 캐시된 컨테이너 이미지를 만듭니다. 이 임시 이미지는 이전 이미지 위에 계층화되고 모든 단계가 완료된 후 단일 이미지로 제공됩니다.
리소스
- Docker 실행 참조(CLI)
- Docker 빌드 참조