Docker-compose 로 컨테이너 생성하기
728x90

얼마전에 Redis 와 Kafka를 설치해서 프로젝트에 설정만 해놔야 할 일이 생겼다.(공부용 으로)

그래서 내가 선택한 것은 yml파일로 redis,kafka를 적절하게 세팅만해서 컨테이너로 올리는 것으로 급하게 사용했다.

오늘은 그 방법을 까먹지 않게 적어놓을까 한다.

OS : Mac

사용한 툴 : visual studio code, docker

Yaml 파일 작성

자신이 원하는 위치에 폴더를 생성한다.

/Users/username/Desktop

터미널에서

mkdir docker-compose-directory

vscode에서 생성한 폴더에서 docker-compose.yml 파일을 생성(terminal에서 할 수도 있지만...)

vscode에서 yml 파일 내용 작성 (메모장으로 해도됨)

docker-compose.yml

version: '3.7'
services:
    redis:
      image: redis:latest    #docker image
      environment: # 환경변수 설정
        - requirepass=${REDIS_PASSWORD} # password 설정 {} 부분은 .env 파일에 있다.
      container_name: redis_boot # container의 이름 설정
      command: > 
        --requirepass ${REDIS_PASSWORD}
      hostname: redis_boot #host name이다
      labels:  # version 3.3에서 추가. 컨테이너에 대한 레이블
        - "name=redis" 
        - "mode=standalone"
      ports: #포트 설정
        - 6379:6379
      env_file: # .env 파일의 경로
        - "./.env"


    zookeeper: # kafka는 zookeeper 와 같이 돌아간다.
      image: wurstmeister/zookeeper 
      ports:
        - "2181:2181"
    kafka:
      #build: . 일단 주석처리함...
      image: wurstmeister/kafka
      ports:
        - "9092:9092"
      environment:
        KAFKA_ADVERTISED_HOST_NAME: <ip 주소> (localhost라면 127.0.0.1)
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      volumes: #서비스에 대한 하위 옵션으로 지정된 호스트 경로 또는 명명된 볼륨을 탑재한다.
        - /var/run/docker.sock:/var/run/docker.sock

여기서 services는 docker에 올릴 container이다. 여러가지 설정을 해서 yml을 실행시키면 container가 생성된다.

version이나 나머지에 대한 것 들은 docker 홈페이지에 나와 있으므로 여기를 참조하면 된다.

env 파일 작성

yml 파일과 동일한 경로에다가 생성해야함

.env

REDIS_PASSWORD=<설정한pwd>

docker-compose 실행

yml파일이 있는 경로에서 명령어 실행

docker-compose up -d

이제 docker-compose.yml 말고 다른 이름으로 작성했다면 작성한 이름을 명시해주면 된다.

docker-compose -f <설정한 이름>.yml up -d

결과

정상적으로 컨테이너가 생성된 것을 확인 할 수 있다.

test

각각의 container에 접속하여 확인해 보자.

Redis는 environment에서 password를 설정해주었으므로 redis-cli에서 auth 인증을 해서 key 값에 value를 넣어보도록 하겠다.

Redis

redis-cli 실행

터미널에서 명령어를 쳐준다.

docker ps : docker 에서 돌아가고 있는 프로세스 확인
docker exec -it 75d1f3427884 /bin/bash : conatiner로 접속
redis-cli : redis-cli 실행
auth <설정한 pwd> : 설정한 pwd 입력

성공한 것을 확인 할 수 있다.

Kafka

Redis와 같이 docker ps로 프로세스 확인해서 kafka의 container id로 접속

 

 

밑줄쳐진 명령어들을 수행하면 consumer에 값이 들어간 것이 확인된다.

TEST 성공..!

728x90

'컨테이너화 vs 가상화 > Docker' 카테고리의 다른 글

Docker CentOS 설치  (0) 2022.04.27
Docker 파일 옮기기  (0) 2022.04.24
Docker에 MariaDB 설치 후 적용  (0) 2022.04.24