AWS Cloud School 8th/<Docker> Honeypot 구현하기

prometheus: connection refused // docker swarm은 이미지를 빌드하지 않는다

Randy, the engineer 2025. 3. 28. 10:11

Prometheus를 통해 데이터를 수집하고자 하고있는데, postgres-exporter와의 connection이 refused됐다고 합니다.

어디서부터 잘못된 걸까요?

현재 저의 상황은 postgres 컨테이너를 도커로 띄우고, 다른 컨테이너에서 prometheus를 띄워 postgres의 데이터를 참조하고자 하고 있습니다.

postgres의 데이터를 참조하기 위해선 postgres-exporter가 필요한데, exporter도 별도의 이미지로 존재하지만 우선 저는 하나의 컨테이너에 묶고싶어서 별도의 Dockerfile을 작성한 상태입니다.

문제는 docker-compose.yml 파일에 있었습니다.

docker swarm을 사용할 때 docker-compose.yml파일은 build 명령어를 무시합니다.

즉, docker-compose에서 이미지 구성은 되지 않는다는 점입니다.

그렇다면 Dockerfile은 못쓰는걸까요? 어떻게 해야할까요?

  1. image pull 하기
    • 별도의 개별적인 설정이 필요하지 않다면 그냥 공유 저장소에서 이미지를 pull해오는게 가장 간단합니다.
  2. image build 하기
    • 저처럼 개별적인 설정이 필요하다면, build를 개별적으로 진행해서 별도의 이미지를 미리 만들어야 합니다. 따라서 해당 이미지를 docker-compose.yml에서 사용해야 하는거죠.

docker build -t mypostgres <dicrectory>

해당 명령어를 통해 별도로 빌드했고,

docker-compose.yml 파일에서도 image: mypostgres:latest 를 입력해주었습니다.