Dockerfile
사용자가 이미지를 어셈블하기 위해 호출할 수 있는 명령들이 포함된 간단한 텍스트 파일.
즉, base image 파일로부터 수정된 image를 만드는 일련의 과정들을 정리해 놓은 파일이며, docker는 이 Dockerfile을 이용해 손쉽게 바로 동일한 이미지를 반복적으로 생성할 수 있다.
docker-Compose.yml
다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구로
앱을 구성하는 서비스를 docker-compose.yml에 정의하여 docker-compose up 명령어로 앱을 실행할 수 있다.
docker-compose.yml에 빌드 명령을 추가하면 Docker compose는 DockerFile를 사용한다.
즉, Docker Compose는 앱이 실행되는 동안 컨테이너를 관리하는 역할이고, 앱이 시작되면 컨테이너를 띄우고 앱이 실행되는 도중에 컨테이너가 종료되면 다시 띄워준다.
조금 더 쉽게 말하자면, docker-compose는 연결된 다수의 Container를 하나로 통합하여 관리하는 도구이고, host level에서만 동작하며, Container 실행 옵션을 미리 정의한 문서인 docker-compose-yml을 기반으로 Container를 실행한다.
Dockerfile에 빌드 관련 내용이 다 기재되어 있기 때문에 docker-compose.yml에서는 따로 빌드 관련 내용을 기재할 필요 없이 Dockerfile의 경로를 지정하기만 하면 된다.
아래는 docker-compose.yml의 기본 형식이다.
# 버전을 정의하는 것으로 버전에 따라 지원하는 형식이 다르다.
version: "3.0"
# docker-compose로 생성 할 container의 옵션을 정의한다.
services:
# 생성 할 container 이름을 지정한다.
[container 이름]:
# container 생성시 사용 할 이미지를 지정한다.
image: [image 이름]:[버전]
# docker-compose build 옵션에서 사용되는 build 옵션을 기재한다.
# dockerfile에 명시된 FROM의 image를 사용하여 위에 명시된 image 이름과 tag로 새로운 image를 생성한다.
build:
# dockerfile의 위치를 지정한다.
context:
# container port mapping 정보
ports:
- "80:80"
# 도커 컨테이너가 실행되었을 때 요청 대기할 포트를 지정한다.
# 여러 포트 지정도 가능하다.
expose:
- "80"
# 환경 변수 리스트 정의
environment:
key: "value"
# 실행 환경 설정
stdin_open: true # docker run -i
tty: true # docker run -t
entrypoint: /bin/bash # exec /bin/bash
아래는 예시 dockerfile과 docker-compose.yml이다.
아래의 docker-compose.yml 파일의 내용은 아래의 docker 명령어 두 개를 수행하는 내용이다.
- docker build -t ubuntu_base_web:v1 ./
- docker run -p 80:80
dockerfile
FROM node
WORKDIR /var/www/html
COPY index.html /var/www/html
COPY server.js /var/www/html
EXPOSE 80
CMD ["node", "server.js"]
docker-comopse.yml
// docker built -t nginx
version: "3.0"
services:
web_service:
image: ubuntu_base_web:v1
build:
context: ./
ports:
- "80:80"
https://velog.io/@s2moon98/dockerFile과-docker-compose.yml-의-차이점
https://doitnow-man.tistory.com/entry/8-Dockerfile-과-Docker-composeyml
'Notes > Docker' 카테고리의 다른 글
[Note] 리눅스 컨테이너(리눅스의 프로세스 격리 기능) (0) | 2022.08.07 |
---|---|
[Note] Docker 입문 정리 (0) | 2022.08.07 |