에러일기

Jenkins 포트(8080)과 내 Docker Spring Image의 포트가 겹친 경우

솜사탕코튼 2025. 2. 23. 17:56

docker-compose.yml

  backend:
    build:
      context: /var/lib/jenkins/.jenkins/workspace/map-sv.site
      dockerfile: Dockerfile
    container_name: backend
    restart: always
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/스키마
      SPRING_DATASOURCE_USERNAME: 비공개 
      SPRING_DATASOURCE_PASSWORD: 비공개
    ports:
      - "8080:8080"

 

nginx.conf(default.conf 등등 마운트된 conf 파일을 의미)

worker_processes auto;
events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    upstream backend {
        server backend:8080;  # Docker Compose에서 backend 서비스로 요청 전달
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

 

문제점

Jenkins와 Spring Boot 애플리케이션(backend)이 모두 8080 포트를 사용하려고 하기 때문에 충돌이 발생하였습니다.

이를 해결하려면 Jenkins 또는 backend 서비스의 포트를 변경해야 합니다.

 

 

해결 방법

1. Jenkins 포트를 변경

1) /etc/default/jenkins 파일 수정

sudo vi /etc/default/jenkins
  • JENKINS_PORT=8080을 JENKINS_PORT=8081 로 변경
  • 못 찾으면 Jenkins 설정 파일 경로 확인
  • 도커 컨테이너로 띄었으면 그 쪽 컨테이너에 접속해서 수정해야 합니다.
sudo find / -name "jenkins.xml" 2>/dev/null
sudo find / -name "jenkins" 2>/dev/null

 

2) Jenkins 서비스 재시작

sudo systemctl restart jenkins

 

3) 변경된 포트로 접속 확인

http://<EC2-퍼블릭-IP>:8081

 

2. Backend(Spring Boot) 포트 변경

1) docker-compose.yml 수정

backend:
  build:
    context: /var/lib/jenkins/.jenkins/workspace/map-sv.site
    dockerfile: Dockerfile
  container_name: backend
  restart: always
  depends_on:
    - db
  environment:
    SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/스키마
    SPRING_DATASOURCE_USERNAME: 비공개
    SPRING_DATASOURCE_PASSWORD: 비공개
  ports:
    - "9090:9090"  # 포트 변경

 

2) nginx.conf에서 backend 포트 변경

upstream backend {
    server backend:9090;  # ✅ backend 서비스 포트 변경
}

server {
    listen 80;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

3) docker-compose 재배포

docker-compose down
docker-compose up -d --build