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
겪은 문제
- .env 파일이 없거나, GitHub Actions 환경에서 DB_USER, DB_PASSWORD가 설정되지 않으면 컨테이너가 실행되더라도 로그인 에러가 난다.
- 컨테이너는 뜨지만 외부에서 접속이 안 되는 경우가 있었는데, 이는 호스트 맥북에서 포트 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 연결도 테스트할 수 있었다.
✍️ 마무리
이 두 주제는 개발을 하며 사소하지만 꽤 시간을 잡아먹는 트러블슈팅 사례들이다.
비슷한 문제를 겪는 분들에게 도움이 되기를 바라며, 앞으로도 이런 실무적인 삽질기를 꾸준히 정리해보려고 한다.
'TroubleShooting' 카테고리의 다른 글
| 🧨 Let's Encrypt + Docker + iptime DDNS 삽질기: 왜 HTTPS 적용이 안 될까? (2) | 2025.07.26 |
|---|---|
| GitHub Actions에서 Gradle 실행 권한 문제 해결기 (0) | 2025.07.21 |
| 🚨 Spring Cloud + Docker 환경에서 FeignClient 호출 시 UnknownHostException 해결기 (0) | 2025.07.19 |
| Docker Compose 컨테이너 덮어쓰기 문제 발생 원인 및 해결 방법 (2) | 2025.07.18 |
| Spring Cloud Gateway - Invalid host: lb://auth_service 에러 해결기 (0) | 2025.06.23 |