기타 서버

Docker Scanner Service

dae-ya 2026. 1. 19. 11:37

바이브 코딩으로 여러 프로젝트를 만들어보았지만 다른 더 좋은 프로젝트가 많거나 완성도가 별로였던 프로젝트가 많았다.

하지만 이번 프로젝트는 서버에 적용해서 써봐도 괜찮다고 생각하여 공유해보려고 한다.

Antigravity로 gemini3와 Sonnet 4.5를 이용해서 만들어보았다.

 

이 프로젝트는 서버 내의 도커 이미지를 가져와 trivy(CVE, 보안 취약점 정밀 분석 엔진)로 분석한 다음 취약점을 webui로 보여주는 기능을 한다.

 

주요 기능

-자동 취약점 스캔(매일 00시)

-실시간 대시보드(한국어 UI)

-CVE 상세 정보 제공

-수정 정보 자동 표시

-심각도별 필터링

-Docker Hub 이미지 지원

 

기술 스택

- Backend: FastAPI, PostgreSQL, Trivy

- Frontend: Next.js 16, React 19
- 라이선스: Apache 2.0
 
 
권장사양
- RAM: 최소 2GB (권장 4GB)
- 디스크: 1GB (Trivy DB 포함)
- Docker 엔진 필수
 

프로젝트는 docker compose로 다운가능하다.

docker-compose.yml을 생성하여 아래 내용을 복사 붙여 넣기 하면 된다.

services:
  # PostgreSQL 데이터베이스
  db:
    image: postgres:17-alpine
    container_name: scanner-db
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      TZ: Asia/Seoul
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER}" ]
      interval: 10s
      timeout: 5s
      retries: 5
    logging:
      driver: "json-file"
      options:
        max-size: "5m"
        max-file: "3"

  # FastAPI 백엔드
  backend:
    image: dokkaeb1/scanner-backend:latest
    container_name: scanner-backend
    restart: always
    environment:
      DATABASE_URL: ${DATABASE_URL}
      TZ: Asia/Seoul
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - trivy_cache:/root/.cache/trivy
    depends_on:
      db:
        condition: service_healthy
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"

  # Next.js 프론트엔드
  frontend:
    image: dokkaeb1/scanner-frontend:latest
    container_name: scanner-frontend
    restart: always
    environment:
      NEXT_PUBLIC_API_URL: http://backend:8000
      NODE_ENV: production
      TZ: Asia/Seoul
    ports:
      - "3000:3000"
    depends_on:
      - backend
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  postgres_data:
  trivy_cache:

 

추가로. env파일도 필요한데 아래 내용을 붙여 넣고 필요한 대로 수정하면 된다.

POSTGRES_DB=scannerdb
POSTGRES_USER=scanner
POSTGRES_PASSWORD=your_secure_password
DATABASE_URL=postgresql://scanner:your_secure_password@db:5432/scannerdb

 

webui가 지원되므로 3000번 포트로 접속하면 된다.

 

프로젝트에 2026-01-19 기준 특징이 있는데

백엔드에서 취약점이 2개

SQL에서 취약점이 12개

총 14개가 기본으로 있다는 점이다.

백엔드에서는 Trivy 엔진 자체 취약점이 있고

postgreSQL에는 아직 업데이트가 되지 않은 취약점이 12개가 있어서 14개의 취약점은 수정이 불가능하다.

 

이미지 선택, 해제 기능도 있으므로 원하는 이미지만 볼 수 있다.