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
위 코드를 입력하면 실행중인 컨테이너가 실행을 멈춘다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker 이미지 종류 (with. Python) (0) | 2022.06.01 |
---|---|
[Docker] GCP 에서 docker로 django 웹 서버 구동 (0) | 2022.04.04 |
[Docker] 4. Django 개발 환경 세팅 (0) | 2022.04.03 |
[Docker] 3. Nginx 컨테이너 설치 및 웹서버 구동 (0) | 2022.04.02 |
[Docker] 2. mariadb 컨테이너 설치 및 세팅 (0) | 2022.04.02 |