TroubleShooting

Docker + PostgreSQL 컨테이너 구성 중 포트포워딩 및 외부접속 확인

창따오 2025. 7. 21. 22:44
728x90

Docker로 PostgreSQL 띄우고 외부에서 접속 테스트하기 – 포트포워딩과 환경변수 주의사항

 

오늘은 auth-db라는 이름으로 PostgreSQL을 Docker 컨테이너에 띄우고 외부에서 접근하는 테스트를 진행했다.

사용한 docker-compose.yml 일부는 다음과 같다

 

services:
  auth-db:
    image: postgres
    container_name: auth-db
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "5432:5432"
    networks:
      - msa-net
    volumes:
      - auth-data:/var/lib/postgresql/data

volumes:
  auth-data:

networks:
  msa-net:
    external: true

겪은 문제

  1. .env 파일이 없거나, GitHub Actions 환경에서 DB_USER, DB_PASSWORD가 설정되지 않으면 컨테이너가 실행되더라도 로그인 에러가 난다.
  2. 컨테이너는 뜨지만 외부에서 접속이 안 되는 경우가 있었는데, 이는 호스트 맥북에서 포트 5432이 막혀 있거나 Docker 네트워크 문제였다.

해결 방법

  • 로컬에서 .env 파일에 환경변수를 직접 지정:
DB_USER=changho
DB_PASSWORD=secret123

그리고 컨테이너 상태 확인:

docker ps

접속 테스트:

psql -h [DDNS주소] -p 5432 -U changho -d postgres

참고

  • docker-compose logs -f 로 에러 로그를 반드시 확인
  • DDNS주소:5432 접속이 안 되면 방화벽 설정이나 로컬 포트 충돌도 의심할 것

 


이렇게 구성 후 로컬 맥북에서도 정상적으로 PostgreSQL에 접속할 수 있었고, 이후 다른 서비스에서 JDBC 연결도 테스트할 수 있었다.

 


✍️ 마무리

이 두 주제는 개발을 하며 사소하지만 꽤 시간을 잡아먹는 트러블슈팅 사례들이다.
비슷한 문제를 겪는 분들에게 도움이 되기를 바라며, 앞으로도 이런 실무적인 삽질기를 꾸준히 정리해보려고 한다.