기술 블로그(Alex)

  • Github Page
    • jekyll
  • Docker
    • guide
    • container
  • 이모저모

Docker Compose

Dec 21, 2018

Docker Compose에 대한 설명과 사용법에 대해서 알아본다.
Docker Compose 란?

  • 여러개의 컨테이너를 실행하기 위해 정의되는 툴이다.
  • YAML 파일을 이용하여 각 컨테이너를 정의한다.
  • 단일 커맨드를 이용하여 정의한 compose 파일의 서비스들을 실행하거나 중지할 수 있다.
  • 어플리케이션의 생명주기를 관리하기 위해 아래와 같은 기능을 제공한다.
    • start, stop, rebuild
    • 실행중인 서비스들의 상태 확인
    • 실행중인 서비스들의 로그 확인
    • 서비스에서 일회성 명령실행

Compose 예제

  • 참여했던 블록체인 프로젝트를 이용하여 Compose 예제를 작성한다.
  • 블록체인은 트랜잭션을 발생시키면 해당 트랜잭션이 최종적으로 블록에 포함되어 합의를 이룬후 처리된다.
  • 트랜잭션의 처리 결과에 대해서 조회하는 API를 제공하게 되는데 이부분을 Redis를 이용하여 처리한다.
  • 현재 프로젝트는 Redis와 연동하는 부분은 존재하지 않지만 결국 블록체인의 한계로 인해 기존의 솔루션들을 결합해야 할 것이다.

소스코드 체크아웃

# 해당 프로제트에는 이미 Dockerfile이 존재한다.
$ git clone https://github.com/xbctechnologies/go-xblockchain.git xnode
# 테스트를 위한 keystore 압축해제
$ unzip xnode/test/keystore.zip -d xnode/ && cd xnode

간단하게 2개의 서비스(Container)를 정의하는 간단한 Compose 파일을 작성한다.
해당 Compose 파일을 실행하면 2개의 컨테이너를 실행하게 된다.
해당 파일은 위에서 체크아웃한 디렉토리 안에 작성한다.

docker-compose.yml 작성

version: '3'
services:
  xnode:
    build: .  # 현재 디렉토리의 Dockerfile을 이용하여 이미지를 빌드
    ports:
     - "7979:7979"  # 컨테이너의 Port와 Host의 Port를 매핑
    command: --singlenet --rpcwhitelist * --verbosity 4 --keystore /go-xblockchain/keys/keystore --password /go-xblockchain/keys/password --validatorpassword /go-xblockchain/keys/val_password --unlock 0x51e5ae98cd821fa044d1eb49f03fb81a7acf3617,0xa809913b5a5193b477c51b4ba4aa0e1268ed6d13,0xdb0c9f45be6b121aaeef9e382320e0b156487b57 --validatoraddrlist 1T:0xdb0c9f45be6b121aaeef9e382320e0b156487b57
    links:
    - "redis"
    volumes:
     - /data/xnode:/root/xnode
  redis:
    image: "redis:alpine" # Docker hub로부터 이미지를 다운로드

Compose Command

# 서비스 시작 (-d : detached)
$ docker-compose up -d

# 서비스 정지
$ docker-compose down

# 서비스 확인
$ docker-compose ps

# 그외 커맨드 확인
$ docker-compose --help
© Alexonepath. All rights reserved. Powered by GitHub Pages.