728x90
반응형

1. Docker Compose 란?

  1. 'docker build'와 'docker run' 명령을 대체할 수 있는 도구
  2. Dockerfile을 대체하지 않는다. 함께 작동한다.
  3. 이미지나 컨테이너를 대체하지 않는다.
  4. 다수의 호스트에서 다중 컨테이너를 관리하는데는 적합하지 않다.

 

2. Docker Compose를 쓰는 이유?

기본적으로 터미널에서 도커 명령으로 할 수 있는 것들을 service(컨테이너) 로 관리할 수 있다.

  • 포트 정의
  • 환경변수 정의
  • 볼륨 정의
  • 네트워크 정의

 

3. 사용하기

프로젝트 루트 파일에 docker-compose.yaml 파일을 생성해준다.

 

 ( https://docs.docker.com/compose/compose-file 참조 )

 

/docker-compose.yaml

version: "3.8"
service:
	mongodb:
		# 이미지
		image: 'mongo'
        
		# 볼륨
		volumes:
			- data:/data/db
            
		# 환경변수
		environmnet:
			MONGO_USERNAME: max
            
		# 환경변수 파일일 경우
		env_file:
			- ./env/mongo.env
            
		# 네트워크
		networks:
			- goals-net
	backend:
    	
	frontend:

 

4. Linux에 Docker Compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version

 

5. Docker Compose up

아래 명령어를 입력하면 이미지를 빌드하고 컨테이너를 실행해준다.

-d 플래그를 붙여 detached 모드에서 실행할 수도 있다.

$ docker-compose up

 

6. Docker Compose down

아래 명령어를 입력하면 모든 컨테이너가 삭제되고 디폴트 네트워크와 모든 것이 종료된다.

-v 플래그를 추가해 볼륨도 삭제할 수 있다.

$ docker-compose down

 

 

7. Backend file, Frontend file 컴포징

version: "3.8"
service:
	mongodb:
    	...
	backend:
		
		# 이미지 빌드
		build: ./backend
		
		# 도커 파일 직접 명시할 때 ( 파일 이름이 Dockerfile이 아닐 때 )
		# build:
		#	context: ./backend
		#	dockerfile: Dockerfile
		#	args:	
		#		some-arg: 1
		
		# 포트지정
		ports:
			- '80:80'	
		
		# 볼륨지정		
		volumes:		
			- logs:/app/logs	
			- ./backend:/app	
			- /app/node_modules	
		
		# 환경 변수 파일	
		env_file:
			- ./env/backend.env
				
		# 의존성 추가
		depends_on				
			- mongodb
						
		
		
	frontend:
    
		# 이미지 빌드
		build: ./frontend
        
		# 포트지정
		ports:
			- '80:80'	

		# 볼륨지정		
		volumes:		
			- ./frontend/src:/app/src

		# it 플래그
		stdin_open: true
		tty: true
        
		# 의존성 추가
		depends_on
			- mongodb
728x90
반응형

+ Recent posts