Log to grow

[Django & Docer] 도커 컴포즈 (Docker compose) 본문

카테고리 없음

[Django & Docer] 도커 컴포즈 (Docker compose)

kkkrrr 2021. 1. 5. 11:26

 

1. 도커 컴포즈 (docker compose)

docker compose는 docker image를 쉽게 실행할 수 있게 도와주는 도구입니다. 

프로젝트를 구성하다보면 서버, DB 등 다양한 서비스를 실행해야 하고, 이를 도커 이미지에서 쉽게 실행할 수 있게 해줍니다.

 

2. docker-compose.yml

도커 컴포즈를 사용하기 위해 프로젝트의 루트 디렉토리에 yml 파일을 생성해줍니다.

 

- version

docker-compose.yml 파일 가장 상단에는 사용할 docker-compose 버전을 입력해줍니다.

version: '3'

 

- services

그리고 프로젝트를 구성하는 서비스들을 명시해주면 됩니다.

app이라는 이름을 가진 Django 애플리케이션을 정의하면 아래와 같이 할 수 있습니다. 

version: '3'

services:
  app:

 

그리고 docker-compose가 실행될 컨텍스트를 현재 디렉토리로 설정해줍니다.

version: '3'

services:
 app:
   build:
     context: .

 

- ports

사용할 포트를 명시해줍니다. 여기서는 8000번 포트를 사용하도록 하겠습니다. 

이 때, 첫 번째 오는 8000은 호스트(여기에서는 로컬)의 포트이고, 두 번째 오는 8000은 도커 컨테이너의 포트입니다.

version: '3'

services:
 app:
   build:
     context: .
   ports:
     - "8000:8000"

 

- volumes

도커는 우리가 프로젝트 코드를 수정하면 도커 이미지를 재시작하지 않고 이를 도커 이미지에 반영시킵니다.

이를 위해 로컬 소스코드 디렉토리와 도커 이미지의 소스코드 디렉토리를 매핑해주어야합니다.

version: '3'

services:
 app:
   build:
     context: .
   ports:
     - "8000:8000"
   volumes:
     - ./app:/app

 

- command

마지막으로, 서버를 실행시킬 명령어를 입력해줍니다.

'>' 기호는 다음 줄로 넘어가는 것을 의미합니다.

version: '3'

services:
 app:
   build:
     context: .
   ports:
     - "8000:8000"
   volumes:
     - ./app:/app
   command: > 
     sh -c "python manage.py runserver 0.0.0.0:8000" 

여기서 주의할 점은 서버를 실행시킬 때의 포트가 위에서 명시한 도커 컨테이너의 포트와 일치해야한다는 점입니다.

 

3. 빌드

이제 docker-compose를 이용하여 빌드를 해볼 차례입니다.

터미널에 'docker-compose build'를 입력하면 아래와 같이 빌드가 성공적으로 이루어진 것을 볼 수 있습니다.

Comments