Setting app.config['SERVER_NAME'] = '0.0.0.0:5000'
is not the same as calling app.run(host='0.0.0.0', port=5000)
.
If you set SERVER_NAME
flask thinks its name is 0.0.0.0:5000
and you will have the below problem.
Normally starting app and curling on host works.
python3 app.py
...
curl -i http://0.0.0.0:5000
...
200 - ok
Running flask app in a container and curling from host also works.
docker build -t flask_test .
docker run --rm -p 5000:5000 flask_test
...
curl -i http://0.0.0.0:5000
...
200 - ok
Starting flask app as service via docker-compose, then curling from host also works.
docker-compose build
docker-compose up
...
curl -i http://0.0.0.0:5000
...
200 - ok
But starting flask app as service via docker-compose, then curling from another container doesn't work.
docker-compose build
docker-compose up
...
docker-compose run test sh
# apk --update add curl
# curl -i http://app:5000
...
404 - not found
Docker-compose built a bridge to connect app
and test
,
and by the logs from app
you can also see that the requests are
comming in (and responded with 404).