본문 바로가기

개발/백엔드

내가 보려고 작성하는 각종 docker 설치 명령어 - mysql, redis, kafka, mongo

windows 기준이고, docker desktop이 설치가 되어 있어야 합니다.

 

1. docker-compose.yml

version: '3.8'
services:
  # Redis 설정
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"
    command: redis-server --requirepass mypassword --save 60 1000  # 60초 동안 1000번 이상 변경시 스냅샷 저장
    restart: unless-stopped
    volumes:
      - redis-data:/data

  # MongoDB 설정
  mongodb:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: rootpassword
      MONGO_INITDB_DATABASE: mydatabase
    volumes:
      - mongodb-data:/data/db
      - mongodb-config:/data/configdb
    restart: unless-stopped

  # MySQL 설정
  mysql:
    image: mysql:latest
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: userpassword
      MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
    volumes:
      - mysql-data:/var/lib/mysql
      - mysql-config:/etc/mysql/conf.d
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: unless-stopped

  kafka:
    image: apache/kafka:latest
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      # KRaft 모드 필수 설정
      CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      # 컨트롤러 설정
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      # 리스너 설정 (내부/외부 통신용)
      KAFKA_LISTENERS: PLAINTEXT://kafka:9092,CONTROLLER://kafka:9093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
    volumes:
      - kafka-data:/var/lib/kafka/data
    command: >
      bash -c "
        echo 'Initializing Kafka...' &&
        /opt/kafka/bin/kafka-storage.sh format -t $${CLUSTER_ID} -c /opt/kafka/config/kraft/server.properties &&
        echo 'Starting Kafka...' &&
        /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
      "
    restart: unless-stopped


# 볼륨 설정
volumes:
  # Redis volumes
  redis-data:
    name: redis-data
  
  # MongoDB volumes
  mongodb-data:
    name: mongodb-data
  mongodb-config:
    name: mongodb-config
  
  # MySQL volumes
  mysql-data:
    name: mysql-data
  mysql-config:
    name: mysql-config
  
  # Kafka volumes
  kafka-data:
    name: kafka-data
  kafka-logs:
    name: kafka-logs

 

 

2. 설치 / 실행

// 1. powershell 관리자 실행

// 2. docker.compose.yml이 있는 폴더로 이동
ex) cd C:\Users\my-account\IdeaProjects

// 3. 이미지 다운 and 컨테이너 실행
docker compose up -d

// 4. 그외 명령어
# 컨테이너 목록 확인
docker ps -a

# 컨테이너 로그 확인
docker logs [컨테이너명]

# 컨테이너 중지
docker stop [컨테이너명]

# 컨테이너 시작
docker start [컨테이너명]

# 컨테이너 삭제
docker rm [컨테이너명]

# 컨테이너 내부 접속
docker exec -it [컨테이너명] bash

 

 

3. application.yml

spring:
  data:
    # MongoDB 설정
    mongodb:
      uri: mongodb://root:rootpassword@localhost:27017/mydatabase
    # Redis 설정
    redis:
      host: localhost
      port: 6379
      password: mypassword
      
  # MySQL 설정    
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
    username: user
    password: userpassword
    driver-class-name: com.mysql.cj.jdbc.Driver
    
  # JPA 설정
  jpa:
    hibernate:
      ddl-auto: update  # 개발환경에서만 사용
    show-sql: true      # 개발환경에서만 사용
    properties:
      hibernate:
        format_sql: true
        
  # Kafka 설정
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-group
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      properties:
        auto.create.topics.enable: true

 

 

'개발 > 백엔드' 카테고리의 다른 글

Spring 대용량 엑셀 업로드  (0) 2025.02.28
Kotlin Spring의 장점과 코루틴  (0) 2025.01.24
Spring Security OAuth  (0) 2025.01.07
Spring GraphQL  (1) 2025.01.06
빠르게 GraphQL 기본 개념 정리  (0) 2025.01.06