Docker 또는 Systemd를 통한 MagicTradeBot 봇 배포

이 가이드는 MagicTradeBot Bot 인스턴스를 컴파일하고 배포하는 방법을 설명합니다. Docker를 사용하는 컨테이너 환경과 Systemd를 사용하는 전통적인 리눅스 기반 서비스 관리 두 가지 방식을 지원합니다.


🛠️ 1. 봇 인스턴스 컴파일하기 (Golang)

MagicTradeBot의 봇 코어는 Go로 작성되었으며 다양한 환경에서 컴파일할 수 있습니다.

🔧 로컬용 컴파일 (Systemd)

go build -o magictradebot main.go

이 명령은 현재 디렉토리에 magictradebot 실행 파일을 생성합니다.

🐳 Docker용 컴파일 및 빌드

프로젝트 루트에 Dockerfile을 생성합니다:

# Dockerfile
FROM golang:1.22-alpine AS builder

WORKDIR /app
COPY . .

RUN go build -o magictradebot main.go

# 최종 이미지
FROM alpine:latest

WORKDIR /app
COPY --from=builder /app/magictradebot .
COPY config.yaml .

CMD ["./magictradebot"]

이미지를 빌드합니다:

docker build -t magictradebot-bot-instance .

🐳 2. Docker를 통한 봇 인스턴스 배포

1단계: 구성 준비

config.yaml 파일이 동일한 디렉토리에 있거나 실행 시 마운트되어 있어야 합니다.

2단계: 컨테이너 실행

docker run -d \
  --name=bot-bybit-01 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  --restart=always \
  magictradebot-bot-instance

docker logs -f bot-bybit-01 명령어로 실시간 로그를 확인할 수 있습니다.

선택: Docker Compose

version: '3.9'

services:
  tradingbot:
    image: magictradebot-bot-instance
    container_name: bot-bybit-01
    restart: always
    volumes:
      - ./config.yaml:/app/config.yaml

🧩 3. Systemd를 통한 봇 인스턴스 배포

1단계: 실행 파일 이동

sudo mv magictradebot /usr/local/bin/
sudo chmod +x /usr/local/bin/magictradebot

2단계: Systemd 유닛 파일 생성

sudo nano /etc/systemd/system/magictradebot.service
[Unit]
Description=MagicTradeBot Instance
After=network.target

[Service]
ExecStart=/usr/local/bin/magictradebot
WorkingDirectory=/opt/magictradebot
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
User=ubuntu

[Install]
WantedBy=multi-user.target

3단계: 서비스 활성화 및 시작

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable magictradebot
sudo systemctl start magictradebot

로그 확인

journalctl -u magictradebot -f

✅ 권장 사항

  • 📁 확장을 위해 봇 인스턴스마다 별도의 config.yaml 사용
  • 🔐 API에 HTTPS 사용 및 환경 변수를 통한 비밀키 관리
  • 📦 격리성과 이식성을 위해 Docker 사용 권장
  • 🛡️ LogDNA, Grafana Loki 등 통합 로깅 도구를 통해 봇 활동 모니터링

📎 Related Topics