본문 바로가기
  • 실행력이 모든걸 결정한다
Docker

[Docker] Dockerfile / docker-compose.yml 파일

by 김코더 김주역 2021. 12. 31.
반응형

[얄팍한 코딩사전 - 가장 쉽게 배우는 도커] 강의를 듣고 정리한 포스팅이다. 필자가 개인적으로 추가한 내용도 있다.

 

1. Dockerfile

1) Dockerfile이란?

- Docker Image를 생성하기 위한 설정 스크립트 파일이다.

- Image 생성 또는 Container 실행시에 실행할 명령어를 정의하고, 주석으로 설명을 덧붙일 수 있는 설계도이다.

- Dockerfile은 디렉토리마다 존재할 수 있으며, 파일명이 Dockerfile 그 자체이다.

 

 

2) 형식 예시

(1) python 이미지

FROM python:3.8.5

# 이미지 생성 과정에서 실행되는 명령어
# 이 이미지를 생성하는 사용자의 컴퓨터에는 아래에 명시된 프로그램들이 자동으로 설치될 것이다.
RUN pip3 install flask flask-cors flask-mysql

# 이미지 내에서 명령어를 실행할 디렉토리
WORKDIR /usr/src/app

# 컨테이너 실행시 실행할 명령어
CMD ["/python3", "main.py"]

 

(2) mysql 이미지

FROM mysql:5.7

# 환경 변수들을 세팅
ENV MYSQL_USER your_id

# 파일 복사
COPY ./schema/ /docker-schema-initdb.d/

 

(3) node 이미지

FROM node:12.18.4

RUN npm install -g http-server

WORKDIR /home/node/app

CMD ["http-server","-p","8080","./public"]

 

 

3) Image build

- Dockerfile을 기반으로한 Image를 생성하기 위한 작업이다.

- CLI에서 Dockerfile이 포함되어 있는 폴더로 이동하고, 아래 명령어를 실행하면 된다.

docker build -t [원하는 이미지명] [Dockerfile 상대 경로]

※ CLI의 현재 디렉토리에 바로 Dockerfile이 존재한다면, "."이 상대 경로이다.

 

 

 

2. docker-compose.yml

1) docker-compose.yml가 필요한 이유

- Dockerfile은 Image에 대한 설계도이기 때문에 Image로 빌드가 되며, 이러한 이유로 Image마다 네트워크가 분리되어 있다. 즉, Image들을 연결하여 하나의 서비스를 구성할 수 있도록 해야할 필요가 있는 것이다.

 

 

2) 파일 버전

아래 문서에서 Docker 버전에 따라 적합한 docker-compose 파일의 버전을 확인할 수 있다.

https://docs.docker.com/compose/compose-file/compose-versioning/#compatibility-matrix

 

Compose file versions and upgrading

 

docs.docker.com

 

 

3) 형식 예시

version: '3'
services:
  # 서비스의 이름
  database:
    # Dockerfile이 존재하는 위치
    build: ./database
    # Host 포트 : Container 포트
    ports:
      - "3306:3306"

  backend:
    build: ./backend
    # 연결할 외부 디렉토리 : 컨테이너 내 디렉토리
    volumes:
      - ./backend:/usr/src/app
    ports:
      - "5000:5000"
    # 환경변수 설정
    environment:
      - DBHOST=database
    
  frontend:
    build: ./frontend
    volumes:
      - ./frontend:/home/node/app
    ports:
      - "8080:8080"

 

 

4) 서비스 실행 

- "docker-compose.yml"에서 지정한 이미지들을 빌드하여 통합하고, 자동으로 컨테이너까지 생성해주는 작업이다.

- docker-compose.yml 파일이 존재하는 디렉토리에서 다음 명령어를 실행한다.

docker-compose up

 

반응형

'Docker' 카테고리의 다른 글

[Docker] Docker 기본 사용법  (0) 2021.12.29

댓글