이 가이드는 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 등 통합 로깅 도구를 통해 봇 활동 모니터링