flask로 간단한 웹 페이지를 만들어서 Local 환경에서 테스트한 후, 서버에 docker container로 서비스를 가동하니 접속이 안되는 문제가 발생하였습니다.

if __name__ == '__main__':
    cache.clear()
    app.run(debug=True, port=8888)

1. port binding도 잘 해주었고,

2. host도 오타없이 잘 작성하였고,

3. python 파일도 정상적으로 실행되고 있었습니다.

 


host='0.0.0.0'

해결책은 간단했습니다.

 

Flask 애플리케이션을 실행할 때, Flask 서버는 기본적으로 127.0.0.1 또는 localhost에서만 연결을 허용합니다.

따라서 "Running on http://127.0.0.1:8888"과 같이 로컬 주소에서만 서버가 실행되는 것이 기본 동작입니다.

하지만 "Running on all addresses (0.0.0.0)" 또는 "Running on http://172.17.0.2:8100"와 같이 모든 주소에서 서버를 실행하려면 Flask 애플리케이션을 아래와와 같은 코드로 실행해야합니다.

if __name__ == '__main__':
    cache.clear()
    app.run(debug=True, host='0.0.0.0', port=8888)

바로 run()함수에 'host = '0.0.0.0'으로 지정해두니 서버 호스트로도 접속이 정상적으로 이루어졌습니다.

 

아래는 chat-gpt가 답해준 내용입니다. 훌륭한 설명이네요.

이렇게 하면 Flask 서버가 모든 주소 (0.0.0.0)에서 클라이언트 연결을 허용하며, 외부 클라이언트도 액세스할 수 있게 됩니다. 
단, 이렇게 서버를 열면 보안상 주의가 필요하며, 특히 개발 환경에서만 사용해야 합니다. 
production(운영) 환경에서는 보안 검토와 관련된 설정을 고려해야 합니다.
따라서 Flask 애플리케이션을 모든 주소에서 실행하고 싶다면 위의 코드를 Flask 애플리케이션 코드 안에서 사용하십시오.

 

python flask로 구현한 웹 페이지를 가상화공간(docker container)에서 서비스하려할 때 위와 같은 문제가 발생하시는 분들께 도움이 되었으면 합니다.

 

+ Recent posts