【发布时间】:2017-09-04 18:09:00
【问题描述】:
我是使用 Docker 的新手。我想使用微服务架构方法重建我的单体应用程序。
我有一个需要与 nginx 服务器交互的 Flask 应用服务器。传统上我们使用 Gunicorn 作为 uWSGI,但是我们如何使用 Docker 来做同样的事情呢?
下面是我的代码,
我有一个 Flask 应用程序,它要求用户上传一个 excel 文件
from flask import Flask, request, render_template
import os
app = Flask(__name__)
default_key = '1'
app.config["UPLOAD_FOLDER"] = "/app"
@app.route('/', methods=['GET', 'POST'])
def mainpage():
if request.method == 'POST':
print request.form
if request.method == 'POST' and request.form['submit'] == 'Check Results' :
#TODO: copy the file into named volume
f = request.files['file']
filename = f.filename
print os.getcwd()
print os.listdir(os.getcwd())
file1 = os.path.join(app.config['UPLOAD_FOLDER'], filename)
f.save(file1)
#TODO: ping the Classifier container
return render_template('index.html')
#def receive_classifier_info():
#TODO: the file has been received so succesfully display the message.
#pass
if __name__ == '__main__':
app.run(host='0.0.0.0')
这是我的模板/index.html
<html>
<head>
<title>key value lookup service</title>
</head>
<body>
<form method="POST" enctype = "multipart/form-data">
<br>
<h3>Select an input file</h3>
<input type="file" name="file" value="Browse">
<br>
<h3>Insert a pic of the sample format</h3>
<br>
<input type="submit" name="submit" value="Check Results">
</form>
</body>
</html>
接下来,这是我构建这个容器的 Dockerfile。
FROM python:2.7
RUN pip install Flask==0.11.1
RUN useradd -ms /bin/bash admin
COPY app /app
WORKDIR /app
RUN chown -R admin:admin /app
RUN chmod 755 /app
USER admin
CMD ["python", "app.py"]
接下来,我的 nginx 服务器充当反向代理。
我不知道如何从这里开始。 :(
我的问题是:
1) 我应该如何包装我的应用程序服务器以确保它与 nginx 容器通信。 -> 每当用户单击提交按钮通知它开始处理时,我都需要通知我的应用程序容器。 -> 接下来,一旦处理完成,它应该通知 nginx 服务器 ok 处理完成。
2) 我应该将 index.html 复制到 /var/www/nginx/html 吗??
谢谢
【问题讨论】:
-
谁能推荐一本能详细描述整个过程的书。谢谢
标签: docker nginx flask dockerfile