관리 메뉴

IT.FARMER

docker- compose [cassandra / mysql] 본문

devops/docker

docker- compose [cassandra / mysql]

아이티.파머 2019. 6. 5. 09:26
반응형

docker- compose 로구성된 개발 환경 구축

 

시스템 항목

  • mysql
  • mysql web admin 
  • cassandra

 

 

 

 

 

version: '3.1'

services:
  ##########################################
  # DB Mysql
  ##########################################
  database:
    image: mysql:5.7.21
    container_name: mysql_hc_tracking
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --explicit_defaults_for_timestamp=1
      --innodb_use_native_aio=0
      # --innodb_force_recovery=1
      # --init-file ./initdata/init_mysql_tracking_server.sql
    restart: always
    environment:
      MYSQL_DATABASE: hc_tracking
      MYSQL_USER: hc_tracking
      MYSQL_PASSWORD: hc_tracking1!@
      MYSQL_ROOT_PASSWORD: root1!@
      TZ: Asia/Seoul
    volumes:
      - ${MYSQL_DATA_FOLDER}:/var/lib/mysql             # windows volumes link
      - ./initdata/:/docker-entrypoint-initdb.d
      #- /var/lib/mysql:/var/lib/mysql  # 리눅스용 볼륨
      #- /etc/timezone:/etc/timezone:ro
      #- /etc/localtime:/etc/localtime:ro
    ports:
    - 3306:3306
  ##########################################
  # DB Web Manager
  ##########################################
  adminer:
    image: adminer
    container_name: adminer_hc_tracking
    restart: no
    ports:
    - 8080:8080
  ##########################################
  # No Sql DB Cassandra
  ##########################################
  cassandra:
    build: ./cassandra
    container_name: cassandra_hc_tracking
    restart: always
    environment:
      CASSANDRA_RPC_ADDRESS: 0.0.0.0
#      CASSANDRA_BROADCAST_ADDRESS: 1.2.3.4
#      CASSANDRA_LISTEN_ADDRESS: localhost
#      CASSANDRA_SEEDS: 127.0.0.1
    volumes:
      - ${CASSANDRA_DATA_FOLDER}:/var/lib/cassandra
      - ./cassandra/data/:/docker-entrypoint-initdb.d
    ports:
      - 7000:7000
      - 7001:7001
      - 7199:7199
      - 9042:9042
      - 9160:9160

# Dockerfile 컨테이너 안의 내부 경로( virtual machine 안에 볼륨 링크)
#volumes:
#  db-mysql-data:


 

Cassandra Port Description

TCP 7000 Cassandra inter-node cluster communication.
TCP 7001 Cassandra SSL inter-node cluster communication.
TCP 7199 Cassandra JMX monitoring port.
TCP 9042 Cassandra client port.
TCP 9160 Cassandra Thrift client port.
TCP 9404 Prometheus plugin port.

 

rpc_address (기본값 : localhost) 클라이언트 연결의 수신 주소 (Thrift RPC 서비스 및 기본 전송)입니다. 

유효한 값 :unset : 노드의 구성된 호스트 이름 구성을 사용하여 주소를 해석합니다. 

설정하지 않은 경우, 호스트 이름은 / etc / hostname, / etc / hosts 또는 DNS를 사용하여 이 노드의 IP 주소로 해석됩니다.

  1. 0.0.0.0 : 구성된 모든 인터페이스를 청취합니다. broadcast_rpc_address를 0.0.0.0 이외의 값으로 설정해야합니다.

  2. IP 주소

  3. 호스트 이름

RPC_ADDRESS = 0.0.0.0

 

 

 

env

환경 설정 프로퍼티 역활을 한다.

#VOLUMES
MYSQL_DATA_FOLDER=C:\Users\skan\docker-data\db\mysql-tracking-data
CASSANDRA_DATA_FOLDER=C:\Users\skan\docker-data\db\cassandra-tracking-data

 

cassandra initial schema.

  • 카산드라 도커 실행시 실행할 최기화 파일
-- Drop the keyspace if it exists
DROP KEYSPACE IF EXISTS hc_tracking_keyspace;

-- Create our keyspace
CREATE KEYSPACE hc_tracking_keyspace WITH replication =  { 'class': 'SimpleStrategy', 'replication_factor': 1 };

-- Use the keyspace
USE hc_tracking_keyspace;

-- Table: session_events
CREATE COLUMNFAMILY user_sessions (
  session_id text,
  ts timestamp,
  path text,
  PRIMARY KEY(session_id, ts)
);

CREATE TABLE users (
    user_id int PRIMARY KEY,
    fname text,
    lname text
);

 

반응형