DockerCompose 포멧 이해

이진영·2022년 10월 10일
0

Docker

목록 보기
9/10
post-thumbnail

생성일: 2022년 2월 19일 오후 6:16
태그: docker_compose

  • 기본적으로 4가지의 큰 카테고리로 작성하며, 이중에서 보통 version과 services만 설정하여 많이 사용함
    • volumes는 각 컨테이너 설정에서의 volumns로 선언할 수 있고 , networks는 컨테이너간 네트워크 분리를 위한 추가 설정 부분임

version

  • Docker Compose 파일 포멧 버전 지정

services

  • 위 항목 아래에서 여러개 또는 하나의 컨테이너를 설정함

image

  • 다음 코드에서 db컨테이너 이름을 정의한 것임
  • db라는 이름의 컨테이너 작성시, Docker Hub에 있는 이미지를 사용할 경우, image 를 설정하면 됨
    • mysql 이라는 Docker Hub에 있는 이미지를 사용하겠다 라는 의미
# services는 컨테이너
# 컨테이너의 1번의 이름은 db
# 이 컨테이너의 베이스 이미지를 mysql
services : 
	db: 
		image:mysql:5.7

restart

  • 컨테이너가 다운되었을 경우, 항상 재시작하라는 설정

🧐 항상 재시작으로 인한 24시간 구동이 가능하다!!

services : 
	db: 
		image:mysql:5.7
		restart:always

volumes

  • docker run 옵션 중 -v 옵션과 동일한 역할
  • 리스트 처럼 작성 가능
services : 
	db: 
		image:mysql:5.7
		restart:always
		volumes:
			- ./mysqldata:/var/ lib/mysql

environment

  • ENV옵션과 동일
services : 
	db: 
		image:mysql:5.7
		restart:always
		volumes:
			- ./mysqldata:/var/ lib/mysql
		environment:
			- MYSQL-ROOT-PASSWORD:funcoding
			- MYSQL_DATABASE=fundb

ports

  • docker run 의 -p 옵션과 동일한 역할
  • YAML문법에서 aa:bb와 같이 작성하며, 시간으로 해석하기 때문에 , 쌍따움표를 붙여줘야 함
services : 
	db: 
		image:mysql:5.7
		restart:always
		volumes:
			- ./mysqldata:/var/ lib/mysql
		environment:
			- MYSQL-ROOT-PASSWORD:funcoding
			- MYSQL_DATABASE=fundb
		port:
			- "3306:3306"

Docker Compose 실행 및 중지 하기

  1. yml 파일 만들기

    vi docker-compose.yml

  2. vi 파일에 만들어 주기

    services : 
    	db: 
    		image:mysql:5.7
    		restart:always
    		volumes:
    			- ./mysqldata:/var/lib/mysql
    		environment:
    			- MYSQL-ROOT-PASSWORD=funcoding
    			- MYSQL_DATABASE=fundb
    		ports:
    			- "3306:3306"

    주의!! : 다음 다음 칸에 작성할 때 꼭 두 칸 띄어쓰자!!

  3. 실행

    # -d : 백그라운드 실행
    docker-compose up -d
  4. 결과

    하지만 현 폴더에 만들어진 것을 볼수 있다.

    mysqldata를 var/lib/mysql 경로를 연결하는 과정에서

    mysqldata파일이 만들어 준적이 없어서 알아서 만들어 준다.

  5. mysqldata 폴더로 들어간다.

    cd mysqldata

  6. 중지 및 삭제

    docker-compose stop

    특정 컨테이너 이름 또는 이미지 이름을 적을 필요가 없다.

    —> 즉 알아서 매핑을 해준다(현재 폴더가 조건이다!!!!!)

    docker-compose down —> 삭제가 잘 된 것을 볼 수 있다.

profile
내가 공부한 것들을 적는 공간

0개의 댓글