🌟 소개
Mattermost는 오픈소스 기업용 메신저로, 슬랙(Slack)의 대안입니다. Docker Compose를 활용하면 MySQL/PostgreSQL DB, Nginx 프록시와 함께 5분 만에 프로덕션 환경을 구축할 수 있습니다! 이 가이드에선:
docker-compose.yml
작성법- 환경 변수 설정을 위한
.env
파일 활용법 - HTTPS 적용 팁
을 단계별로 설명합니다.
⚙️ 1. 사전 준비 사항
- Docker & Docker Compose 설치
# Ubuntu 예시 sudo apt update && sudo apt install docker.io docker-compose
- 도메인 준비 (선택): HTTPS 적용 시 필요
- 포트 충돌 체크:
80
,443
,8065
포트 사용 확인
📂 2. 프로젝트 구조 생성
mkdir mattermost-docker && cd mattermost-docker
mkdir -p ./volumes/{app,db,web/cert} # 데이터 영구 저장 디렉토리
touch docker-compose.yml .env # 핵심 파일 생성
🐋 3. docker-compose.yml
작성
version: '3.7'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- ./volumes/db:/var/lib/mysql # DB 데이터 보존
networks:
- mm-network
app:
image: mattermost/mattermost-team-edition
depends_on:
- db
environment:
MM_SQLSETTINGS_DRIVERNAME: mysql
MM_SQLSETTINGS_DATASOURCE: "${DB_USER}:${DB_PASSWORD}@tcp(db:3306)/${DB_NAME}?charset=utf8mb4"
MM_SERVICESETTINGS_SITEURL: ${SITE_URL}
volumes:
- ./volumes/app:/mattermost/data # 업로드 파일 등 저장
networks:
- mm-network
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443" # HTTPS 적용 시
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./volumes/web/cert:/etc/letsencrypt # 인증서 저장
depends_on:
- app
networks:
- mm-network
networks:
mm-network:
driver: bridge
🔍 주요 설정 설명
- 의존성 관리:
depends_on
으로 DB → App → Web 실행 순서 보장 - 네트워크: 서비스 간 통신을 위한
mm-network
브릿지 생성 - 볼륨 마운트: 컨테이너 재생성 시 데이터 유지
⚡ 4. .env
파일 설정
# DB 설정
DB_ROOT_PASSWORD=SuperSecretRootPass!123
DB_NAME=mattermost
DB_USER=mm_user
DB_PASSWORD=Strong!UserPass456
# Mattermost 설정
SITE_URL=https://chat.yourdomain.com # HTTPS 필수!
🚨 주의사항
- 비밀번호는 영문 대소문자+숫자+특수문자 조합으로 생성
SITE_URL
은 반드시 HTTPS로 시작 (SSL 적용 시)- 실제 운영 환경에선
.env
파일 권한을600
으로 설정
🔒 5. Nginx 설정 (HTTPS 적용)
nginx.conf
파일 생성:
events {}
http {
server {
listen 80;
server_name chat.yourdomain.com;
return 301 https://$host$request_uri; # HTTP → HTTPS 강제 전환
}
server {
listen 443 ssl;
server_name chat.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/chat.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.yourdomain.com/privkey.pem;
location / {
proxy_pass http://app:8065;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
📜 인증서 발급 (Let’s Encrypt)
docker run -it --rm --name certbot \
-v "./volumes/web/cert:/etc/letsencrypt" \
-p 80:80 \
certbot/certbot certonly --standalone -d chat.yourdomain.com
🚀 6. 실행 및 확인
docker-compose up -d # 백그라운드 실행
docker-compose logs -f app # 실시간 로그 모니터링
- 접속 테스트:
https://chat.yourdomain.com
- 초기 관리자 계정:
sysadmin
/ 비밀번호는 콘솔 로그에서 확인
🛠 7. 추가 설정 팁
🔄 백업 구성
# DB 백업
docker exec -i mattermost-docker_db_1 mysqldump -u root -p${DB_ROOT_PASSWORD} ${DB_NAME} > backup.sql
# 파일 저장소 백업
tar czvf mattermost-data.tar.gz ./volumes/app
⚙️ 환경 변수 확장
.env
에 추가 가능:
# 이메일 알림 설정
MM_EMAILSETTINGS_SMTPSERVER=smtp.gmail.com
MM_EMAILSETTINGS_SMTPPORT=587
MM_EMAILSETTINGS_CONNECTION_SECURITY=starttls
MM_EMAILSETTINGS_FEEDBACKNAME=MattermostBot
🎯 결론
Docker Compose로 Mattermost를 구성하면:
✅ 빠른 배포 (5분 내 완성)
✅ 업그레이드 용이 (docker-compose pull && docker-compose up -d
)
✅ 확장성 (사용자 증가 시 DB/App 분리 배치 가능)
Slack 대비 데이터 자체 호스팅으로 보안성 ↑ + 연간 $200k+ 비용 절감 효과!
> 💬 문제 발생 시 공식 문서 참고:
> Mattermost Docker Guide
초기 설정 후 팀원 초대 → 채널 생성 → 슬래시 명령어 활용으로 생산성을 높여보세요! 🚀 D