Coding Planet
[Docker]docker-compose.yml 뜯어보기 (볼륨 마운트가 머야..) 본문
API 게이트웨이를 컨테이너로 띄우기 위해 실습을 하고 있다. 도커가 아직 낯설다. 이전에는 이미지가 있고 그 이미지를 바탕으로 독립적인 실행환경인 컨테이너가 만들어진다 정도만 알고 있었다.
여러개의 컨테이너의 설정을 정의하고 구성하는데 사용되는 docker-compose.yml를 뜯어보자
(아래는 유레카 서버를 위한 docker-compose.yml이다)
version: "3"
services:
eureka-server:
build: .
image: server
ports:
- 15000:15000
volumes:
- ./eureka-server/logs:/logs
environment:
- TZ=Asia/Seoul
~
1. version : 이 파일이 사용하는 docker-compose의 버전을 의미한다.
2. service: docker-compose 파일에서 정의하는 각 서비스, 즉 컨테이너를 나타낸다. 여기서는 내가 빌드하고자 하는 유레카 서버에 대해 정의한다.
3. build :서비스에 대한 도커 이미지를 빌드할 때 사용할 컨텍스트(디렉토리)를 지정한다. 여기서 '.'이란 현재 디렉토리를 의미한다. 즉 이 디렉토리 내에 있는 'Dockerfile'을 사용하라는 의미이다. 원하는 폴더로 지정할 수 있다. 예를 들면 ./app -> 현재 디렉토리의 app 디렉토리 내부에 있는 Dockerfile을 쓰게 할 수도 있다.
4. image: 빌드된 도커 이미지에 할당될 이름을 지정한다. 여기서는 이미지 이름을 'server'라고 지정했다.
5. ports: 호스트 시스템의 포트와 컨테이너의 포트를 매핑한다. 여기서는 호스트의 15000 포트를 컨테이너의 15000 포트에 매핑하고 있다. 이를 통해 외부 네트워크에서 컨테이너의 15000 포트에 접근할 수 있다. 이 때, 호스트와 컨테이너 포트 값은 다를 수 있다. 그냥 매핑의 의미이다(10000:15000 쌉가능)
6. volumes: 호스트 시스템의 디렉토리 또는 다른 볼륨을 컨테이너 내의 경로에 마운트한다. 여기서는 현재 디렉토리의 eureka-server/logs 디렉토리를 컨테이너의 /logs 디렉토리에 마운트하고 있다. 이를 통해 컨테이너에서 생성되는 로그 파일들을 호스트 시스템에서도 접근할 수 있다.
7. enviornment : 컨테이너 내에서 사용될 환경 변수를 설정한다.
** 마운트: 운영 체제에서 파일 시스템을 특정 디렉토리에 연결하는 과정을 의미한다.이를 통해 파일 시스템에 접근하고 파일을 읽거나 쓸 수 있다. Docker에서 마운트는 호스트 시스템의 디렉토리나 파일을 컨테이너 내의 특정 경로에 연결하는 것을 의미한다. 이 연결을 통해 컨테이너는 호스트 시스템의 파일이나 디렉토리를 자신의 파일 시스템의 일부처럼 사용할 수 있다.
-> 컨테이너는 호스트와는 격리된 환경에서 실행되는 인스턴스이다. 따라서 각 컨테이너는 독립적인 파일 시스템, 네트워크 인터페이스, 메모리등을 가지는데 데이터, 로그파일 관리 및 코드 및 설정 고유를 위해 컨테이너와 호스트 시스템을 연결하는 것을 볼륨 마운트라고한다.
'etc' 카테고리의 다른 글
[dbeaver] 복사 오류 - dbeaver unhandled event loop cannot set data in clipboard (0) | 2024.06.05 |
---|---|
[Docker]Dokcerfile 뜯어보기 (0) | 2024.01.17 |
[Virtual Box] 환경설정 호스트 키 조합 창 입력 안될 때 (1) | 2024.01.10 |
[인텔리제이] 프로젝트 빌드 오류 해결 - Cannot resolve symbol 'SpringApplication' (1) | 2024.01.07 |
[intellij] git url로 프로젝트 가져오기 (1) | 2024.01.03 |