
build: Dockerfile이 위치한 경로를 명시하거나, build context와 Dockerfile의 이름을 명시하는 데 사용된다.image: 컨테이너가 실행될 때 사용할 이미지를 명시한다.context: Dockerfile이 위치한 디렉토리의 경로를 설정한다.dockerfile: Dockerfile의 이름을 설정한다.ports: 호스트와 컨테이너 간에 포트를 연결하는 데 사용된다.volumes: 호스트와 컨테이너 간에 볼륨을 공유하는 데 사용된다.environment: 컨테이너에서 사용할 환경 변수를 설정하는 데 사용된다.depends_on: 서비스 간의 의존성을 정의하는 데 사용된다.restart: 컨테이너가 종료될 때 재시작 정책을 설정하는 데 사용된다.command: 컨테이너가 시작될 때 실행할 명령어를 설정하는 데 사용된다.links: 다른 서비스를 이 서비스에 연결하는 데 사용된다.FROM: 기반 이미지를 지정합니다. Docker 이미지는 이 FROM에 기반하여 생성된다.LABEL: 이미지에 메타데이터를 추가한다.RUN: 이미지를 생성하는 동안 셸 또는 명령어를 실행한다.CMD: 컨테이너가 시작될 때마다 실행될 명령어를 지정한다.ENTRYPOINT: 컨테이너가 시작될 때 실행될 명령어를 설정한다. CMD와 비슷하지만, ENTRYPOINT는 docker run에 추가적인 인수를 받을 수 있다.COPY: 파일 또는 디렉토리를 이미지로 복사한다.ADD: 파일, 디렉토리, 또는 원격 파일 URL을 이미지로 추가한다. 압축된 파일의 경우 압축 해제까지 수행한다.ENV: 환경변수를 설정한다.ARG: Dockerfile 내에서 사용될 변수를 정의한다.EXPOSE: 네트워크 포트를 연다.WORKDIR: 작업 디렉토리를 설정한다.USER: RUN, CMD, ENTRYPOINT 명령어를 실행할 사용자를 설정한다.VOLUME: 영구 데이터를 저장하는 디렉토리를 설정한다.Dockerfile과 docker-compose.yml을 분리하는 주된 이유는 두 도구의 역할과 사용 목적이 다르기 때문이다.
각각의 도구는 컨테이너화된 애플리케이션을 구축하고 관리하는 데 있어 서로 보완하는 기능을 제공한다.
모듈성:
재사용성:
가독성:
확장성:
복잡성:
초보자에게 어려움:
간소화:
초보자 친화적:
유연성 부족:
재사용 어려움: