I am working on a microservice written in python. My microservice works fine on my windows machine and I can easily test it. However, on my Linux container it may work fine too but I cannot test it. Even when optimizing my code for network access as explained here.
So here is my microservice:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
- I tested this by running on windows by typing in the command prompt:
python.exe app.py
- I got a message ending with
Running on http://0.0.0.0:5000/ (Press CTRL C to quit).
To test my microservice, I executed my browser to access: http://localhost:5000/
I can see the "Hello World" message. So my application seems to work perfectly.
After that, I started working with docker. Here is my Dockerfile (named "Dockerfile").
FROM python
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install Flask
COPY . /app
WORKDIR /app
ENTRYPOINT ["python3"]
CMD ["app.py"]
Here is my build command:
docker build -t docktoflask .
Which shows some output considering the build process.
Then I started running the container with this command:
docker run -p 5002:5002 docktoflask
I got the same ending message as I got on windows (which is remarkable because I specified port 5002).
After that I tried testing with this link: http://localhost:5002/
(of course I also tried http://localhost:5000/ )
No success.... (which means a browser error instead the hello world message). The error is in Dutch (my browser language) but means the same as this.
This is annoying because it seems to work and the port is really active. There are two applications, I should be able to access from my browser (portainer and my own application). I can access portainer without any problems. How can I access my microservice, when running it in a docker container?