Dockerfile
- https://github.com/scline/docker-cacti/blob/master/Dockerfile
- Rocky 9.0을 베이스 이미지로 사용
- 환경 변수로 DB 접속 정보, URL 경로, PHP 기본값 설정
- start.sh 복사 및 실행
- cacti + spine tar.gz 복사
- 서포트 파일(configs, configs/crontab, backup, upgrade, restore) 복사
- RUN
- sh 파일 실행 권한 추가
- 볼륨 디렉토리 /backups, /cacti, /spine 생성
- 패키지 업데이트 및 설치(php, mariadb, 소스 설치 도구 등)
start.sh
- https://github.com/scline/docker-cacti/blob/master/start.sh
- 초기 환경 설정
- PHP 설정, 시스템 TZ 설정
- 새 설치 여부 판단
/cacti/install.lock파일의 존재 여부로 이미 설치된 상태인지 판단- Cacti와 Spine 파일 압축 해제, 필요한 디렉토리로 이동
- 템플릿 파일, 플러그인, 설정 파일들을 적절한 위치에 복사하여 기본 환경을 구성
- DB가 준비될 때까지 대기 후, 데이터베이스 생성 및 사용자 권한 설정, 그리고 cacti.sql 파일을 DB에 적용하여 초기 데이터를 세팅합니다.
REMOTE_POLLER가 1이면, 마스터와의 설정 연동을 위한 추가 작업(예, config.php 수정, 파일 권한 조정 등)을 수행합니다.
- 서비스 시작
- crond, snmpd, php-fpm, apache 실행
Compose 구조
![]()
https://github.com/scline/docker-cacti/blob/master/docker-compose/cacti_multi_shared.yml
Cacti Master+ Cacti Master DB + Poller + Poller DB
Cacti
- 위 Dockerfile로 생성한 cacti 이미지 사용
- 웹 인터페이스 및 기본 Cacti 기능용 주 컨테이너
- 환경변수로 db 접속 정보 설정
- /cacti, /spine, /backups 볼륨 공유
Poller
- 위 Dockerfile로 생성한 cacti 이미지 사용
- 환경변수
REMOTE_POLLER=1가 설정되어 원격 풀러(데이터 수집 전용)로 동작 - cacti_poller DB 접속 정보와 동시에 마스터 DB 접속 정보를 전달받아, 마스터로부터 설정을 가져와서 폴링 작업만 수행하도록 구성
- /cacti, /spine, /backups 볼륨 공유
DB
- MariaDB 10.3 이미지 사용하며, Cacti와 Poller가 각각 DB 사용
Network
- 4개 컨테이너가 같은 네트워크공유
Volume
- Cacti와 Poller가 호스트의 /cacti, /spine, /backups 볼륨 공유
- /var/lib/mysql를 db volume으로 사용