What is the correct way of calling gunicorn in docker?

I have done a lot of research on deploying flask on gunicorn. I have built a docker image and tried to run but never got lucky. So I wanted to know the right way of calling a flask app from gunicorn.

app.py:

from flask import Flask, render_template
import pandas as pd

application = Flask(__name__)

@application.route("/")
def index():
    df = pd.DataFrame([1,2,3])
    return str(df.to_json())


if __name__ == "__main__":
    application.run(host="0.0.0.0", port=8080)

FROM python:3.6
ADD . /app
WORKDIR /app
RUN pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org  flask gunicorn pandas
EXPOSE 8080
CMD ["gunicorn", "-b", "0.0.0.0:8080", "app:application","-p 8080:8080]

I have seen another version where WSGI.py is constructed:

import application from app
if __name__ == '__main__':
   application.run()

FROM python:3.6
ADD . /app
WORKDIR /app
RUN pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org  flask gunicorn pandas
EXPOSE 8080
CMD ["gunicorn", "-b", "0.0.0.0:8080", "wsgi:application","-p 8080:8080]

Question 1:
Do I need wsgi.py?

Question 2:
Do I need to include host in wsgi.py?

Source: StackOverflow