Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docker] docker oserror: [errno 98] address already in use #12

Open
JunYupK opened this issue Jan 23, 2025 · 0 comments
Open

[Docker] docker oserror: [errno 98] address already in use #12

JunYupK opened this issue Jan 23, 2025 · 0 comments

Comments

@JunYupK
Copy link
Owner

JunYupK commented Jan 23, 2025

문제상황

docker-compose 설정을 dev(개발), prod(운영) 환경으로 분리하고, 배포를 진행하자 크롤러 서버에서 8000번 포트가 사용중이란 에러를 지속적으로 반환하여 서버가 실행이 되지 않는 상황 발생

[시도한 방법]

  1. 해당 포트 사용 확인 => 해당 포트 사용중인 서비스 없음
  2. docker 네트워크 재 설정
  3. GCP 환경이 아닌 mac, window 환경 (로컬) 모두 시도 => 같은 에러 발생
  4. 기본 사용 포트 변경 8000 => 8001

모든 방법을 시도해도 같은 에러가 발생하였습니다.

결론적으론 이전에 설정한 변경 중 배포를 하기 위해 port 설정을 Expose로 변경하였는데 해당 문법 오류였습니다.

[EXPOSE VS PORT]

EXPOSE:

  • Dockerfile 내에서 사용되며, 컨테이너가 어떤 포트에서 실행될 것인지 문서화하는 역할을 합니다
  • 단순히 선언적인 용도이며, 실제로 포트를 외부에 노출시키지는 않습니다
  • 다른 개발자들에게 이 컨테이너가 어떤 포트를 사용하는지 알려주는 일종의 메타데이터입니다
  • docker inspect 명령으로 확인할 수 있습니다

PORT:

  • 실제로 컨테이너의 포트를 호스트 시스템에 노출시킵니다
  • 런타임에서 -p 또는 --publish 옵션으로 설정합니다
  • 외부에서 컨테이너에 접근할 수 있도록 해줍니다

즉 아래와 같이 EXPOSE에서는 노출할 포트 하나만 지정해야하는데 port와 같은 [호스트]:[docker] 형태의 포트 바인딩을 명시했기때문에 문법오류로 해당 오류가 발생한 것입니다.

expose:
      - "8080:8080"
      - "8000:8000"

둘의 차이점은 간단하게 생각하면 해당 컨테이너가 외부에서 접근이 가능하면 PORT, 불가능하다면 EXPOSE로 설정을 한다고 생각하면 됩니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant