Coding Planet

[Docker]docker-compose.yml 뜯어보기 (볼륨 마운트가 머야..) 본문

etc

[Docker]docker-compose.yml 뜯어보기 (볼륨 마운트가 머야..)

jhj.sharon 2024. 1. 14. 16:24
반응형

 

 

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에서 마운트는 호스트 시스템의 디렉토리나 파일을 컨테이너 내의 특정 경로에 연결하는 것을 의미한다. 이 연결을 통해 컨테이너는 호스트 시스템의 파일이나 디렉토리를 자신의 파일 시스템의 일부처럼 사용할 수 있다.

-> 컨테이너는 호스트와는 격리된 환경에서 실행되는 인스턴스이다. 따라서 각 컨테이너는 독립적인 파일 시스템, 네트워크 인터페이스, 메모리등을 가지는데 데이터, 로그파일 관리 및 코드 및 설정 고유를 위해 컨테이너와 호스트 시스템을 연결하는 것을 볼륨 마운트라고한다.

 

 

성공적으로 컨테이너가 올라간 모습

반응형
Comments