Mattermost는 오픈소스 기반의 설치가능한(self-hostable) 온라인 채팅 서비스 및 파일공유 소프트웨어다. Slack의 오픈소스 버전이라고 할 수 있을 정도로 Slack과 유사한 인터페이스와 기능들을 제공한다.
효과적인 커뮤니케이션 시스템 구성은 개발환경에 매우 중요한 요소다. 나는 Slack, Jira, Confluence 조합을 주로 사용했다. 매우 훌륭한 조합이긴 한데, 보안 이슈 때문에 Slack을 사용 할 수 없는 경우가 있다. 이때 mattermost를 slack 대안으로 사용 할 수 있다.
Mattermost 설치
나는 아래와 같은 통합 개발 환경을 만들려고 한다.
이들 환경은 개발팀에서 요구 할 경우 즉시 배치를 해야 하기 때문에 도커(docker)로 관리하기로 했다. 여기에서는 traefik를 reverse proxy로 하는 mattermost docker-compose를 구성 할 것이다.
traefik은 오픈소스 기반의 Edge Router이다. kong, istio와 유사한 솔류션이다.
아래는 docker-compose 파일이다.
ports : traefik는 proxy를 위한 포트 80과 관리를 위한 포트 8080을 제공한다.
volumes : 볼륨을 마운트 하기 위해서 사용한다. traefik은 모니터링과 proxy를 위해서 도커로 실행된 mattermost의 정보를 알고 있어야지만 한다. docker api를 호출하기 위해서 docker.sock를 마운트했다. 아래는 traefik.yml 내용이다.
앞서 설정한 mysql 데이터베이스 정보로 환경(environment)를 설정한다. 가장 중요한 것은 labels 다. 이렇게 된거 labels의 작동원리를 살펴보기로 했다. docker-compose up 으로 docker 애플리케이션을 실행 한 후 컨테이너 정보를 확인했다.
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc6d6be0cdc3 traefik "/entrypoint.sh trae…" 12 hours ago Up 4 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp traefik
42e332afa8a4 mattermost/mattermost-prod-app "/entrypoint.sh matt…" 12 hours ago Up 4 minutes (healthy) 8000/tcp devops_mattermost_1
785f04c525df mysql/mysql-server:8.0 "/entrypoint.sh mysq…" 12 hours ago Up 4 minutes (healthy) 3306/tcp, 33060/tcp devops_db_1
docker inspect명령으로 devops_mattermost_1 컨테이너의 label 정보를 확인 할 수 있다. labels 외의 내용은 생략했다.
# docker-compose up
WARNING: Some networks were defined but are not used by any service: outside-world, internal-network
Starting devops_mattermost_1 ... done
Starting devops_db_1 ... done
Starting traefik ... done
Attaching to devops_mattermost_1, devops_db_1, traefik
db_1 | [Entrypoint] MySQL Docker Image 8.0.19-1.1.15
db_1 | [Entrypoint] Starting MySQL 8.0.19-1.1.15
mattermost_1 | Using existing config file /mattermost/config/config.json
mattermost_1 | Using existing database connection
db_1 | 2020-04-19T08:01:27.649106Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
Mattermost는 웹, 데스크탑, 모바일 클라이언트를 제공한다. 데스크탑은 윈도우즈, 리눅스, 맥 클라이언트를 제공하며, 모바일은 안드로이드와 iOS를 제공한다.
Contents
Mattermost
Mattermost 설치
Mattermost 실행
정리
Recent Posts
Archive Posts
Tags