본문 바로가기

DevOps/Docker

[Docker] django 터미널에서 docker-compose를 이용하여 개발환경 구성하기

 

docker-compose를 이용하면 현재 개발중인 프로젝트 django 이미지와 mariadb 이미지 또는 nginx까지 합쳐서 구동시킬 수 있다.

 

 

docker-compose.yml 파일 생성 및 작성

# docker-compose.yml

version: "3.9"
services: 
    mariadbtest:
        image: mariadb:10.5
        networks: 
            - docker
        ports:
            - 3306:3306
        volumes: 
            - ${PWD}/database:/var/lib/mysql
        environment: 
            MARIADB_ROOT_PASSWORD: 1234
            MARIADB_DATABASE: django
    
    djangotest:
        build: 
            context: .
            dockerfile: ./localbind.Dockerfile
        networks: 
            - docker
        ports: 
            - 8000:8000
        volumes: 
            - ${PWD}:/home/Docker_Practice
        depends_on: 
            - mariadbtest
    
networks: 
    docker:

 

version: "3.9"

  • docker-compose.yml 파일의 첫번째 줄에는 파일 규격 버전을 적는다.

 

serivce:

  • service는 docker stack과 관련이 깊다. (나중에 공부할 예정)
  • docker-compose.yml 파일에 작성된 컨테이너들을 정의해서 구동하는 것이기 때문에 compose를 통해서 service 내부에 있는 컨테이너들을 정의하고 만든다고 생각하면 쉽다.

 

mariadbtest:

  • 생성하고자 하는 컨테이너의 이름이다.

 

image: mariadb:10.5

  • 현재 만들어져 있는 mariadb:10.5 이미지를 사용해서 컨테이너를 만들겠다는 뜻이다.

 

network: (-docker)

  • 만들 컨테이너의 네트워크를 의미하는 것이고, 만들 컨테이너를 'docker' 네트워크에 포함시킨다는 뜻이다.

 

ports: (-3306:3306)

  • 사용할 포트를 의미하며, 왼쪽부터 host의 3306 포트와 컨테이너의 3306포트를 연결시킨다는 뜻이다.

 

volumes: (- ${PWD}/database:/var/lib/mysql)

  • host의 특정 디렉터리와 컨테이너 내부의 /var/lib/mysql을 bind볼륨으로 연결시켜 준다는 뜻이다.

 

enviroment:  (MARIADB_ROOT_PASSWORD: 1234

                       MARIADB_DATABASE: django)

  • 컨테이너의 환경변수를 설정해준다.

 

depends_on: ( -mariadbtest )

  • depends_on은 mariadbtest 컨테이너가 구동되고 현재 컨테이너를 구동해야 한다는 뜻. 말 그래도 mariadbtest에 의존한다는 뜻이다.

 


 

docker-compose 빌드 및 실행

앞서 확인한 yml 파일을 바탕으로 컨테이너를 빌드 및 실행할 것이다.

 

docker-compose up --build -d

 

위의 코드를 입력하면 컨테이너가 빌드가 된 후 백그라운드로 실행이 될 것이다.

 

만약, 실행중인 컨테이너를 실행취소 시키고 싶을때는

 

docker-compose down

 

위 코드를 입력하면 실행중인 컨테이너가 실행을 멈춘다.