我知道在docker中我们可以像这样运行数据量容器
#create a pure data container based on my data_image
docker run -v /data --name data-volume-container data-vol-container-img
# here I'm using the data volume in a property container (ubuntu)
docker run --volumes-from data-volume-container ubuntu
Run Code Online (Sandbox Code Playgroud)
我的问题是我们如何创建data_image?
我知道最简单的方法是创建一个基于ubuntu的图像,或类似的东西
From ubuntu
Copy data /data
CMD["true"]
Run Code Online (Sandbox Code Playgroud)
但问题是,为什么我需要ubuntu作为我的基本图像??? (我知道这不是什么大问题因为ubuntu会在其他情况下重新使用).我真的很想知道为什么我不能用刮痕?
FROM scratch
COPY data /data
#I don't know what to put here
CMD ["???"]
Run Code Online (Sandbox Code Playgroud)
我在这里创建的图像是一个虚拟的图像,它执行绝对NOTHING并且只作为一个虚拟数据容器,即用于 docker run -v /data --name my_dummy_data_container my_dummy_data_image
有任何想法吗??
(是否因为临时没有实现最小的文件系统?但是如果容器没有实现自己的,那么Docker可以使用主机系统的文件系统)
我在windows box上使用python 2.7.我可以使用pip install安装flask,如下所示:
但是,在我创建了virtualenv后,我在尝试做同样的事情时得到了以下错误.
脚本:
$pip install virtualenv
$cd /d d:
$mkdir test
$cd test
$virtualenv flaskEnv
$cd flaskEnv/Scritps/
$activate
$cd ../../
$pip install flask
Run Code Online (Sandbox Code Playgroud)
日志文件如下:
Collecting flask
Using cached Flask-0.11.1-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): click>=2.0 in c:\projects\flask-react\flsk\lib\site-packages (from flask)
Requirement already satisfied (use --upgrade to upgrade): Werkzeug>=0.7 in c:\projects\flask-react\flsk\lib\site-packages (from flask)
Collecting Jinja2>=2.4 (from flask)
Using cached Jinja2-2.8-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask)
Collecting MarkupSafe (from Jinja2>=2.4->flask)
Using cached MarkupSafe-0.23.tar.gz
Building wheels for collected packages: MarkupSafe …Run Code Online (Sandbox Code Playgroud) 我们正在构建一个 Web 应用程序,但在前端显示服务器端验证错误消息时遇到了一些问题。
为了提供一些上下文,我们正在运行一个单页应用程序,其中前端在 react.js 中实现,后端 api 在 asp.net 中实现。我们的应用程序中有许多表单要求用户填写,我们计划在客户端和服务器端实现表单验证。
我们现在的工作流程是先做客户端验证,然后将数据传递给后端 api。后端将首先执行与前端相同的验证,以确保请求不是来自绕过客户端验证规则的恶意用户。对于来自正常通道的请求,它永远不应该失败这一步,但是,如果失败,则仅意味着我们正在与黑客打交道。
但是,在服务器端验证中还有更多内容。有客户端不知道的信息,例如我们的数据库中是否存在刚刚输入的银行帐户用户?(我们没有专用的 api 来验证这一点,因此我们必须在用户将整个表单提交到服务器端后在表单级别执行此操作)。
所以总而言之,服务器端验证规则有两部分:与前端共享的基本验证规则,以及需要数据库访问的高级验证规则,仅在服务器端可用。
现在的问题是,在这两种类型的验证失败后,我们如何通知用户?
以下是我们迄今为止提出的两个建议
解决方案 1:使用 HTTP 400 - Bad Request 表示业务失败
我们以相同的方式对待这 2 种类型的服务器端验证,当任何请求未通过任何验证时,我们会发回 HTTP 400,其中包含一个 json 对象,其中包含详细的错误消息,说明失败的原因。示例响应将是
HTTP 400 Bad Request
{
"bsb_name" :"bsb_name has special characters",
"bsb_number":"bsb number doesn't exist",
"amount":"amount is required"
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我们不是唯一可以返回HTTP 400的一方。由于我们使用的是asp.net框架加OWIN框架,框架本身在一定情况下也可以返回HTTP 400,而他们发送的HTTP 400是和我们很不一样。这为前端创建了额外的工作,以区分 2 种类型的 HTTP 400 并以不同的方式处理它们。
建议重构我们的响应,而不是发送回 JSON 对象,我们发送回纯字符串 --- 基于 asp.net 框架/owin 将以纯字符串发送回其 HTTP 400 的假设 (1) . 所以在前端我们没有区分它们并且可以以相同的方式处理它们。此外,为了避免引入魔法分隔符,我们只返回第一个错误消息文本而不是全部。所以样本响应可能是
HTTP 400 Bad Request
"Bank …Run Code Online (Sandbox Code Playgroud) asp.net ×1
asp.net-mvc ×1
c# ×1
containers ×1
docker ×1
flask ×1
python ×1
validation ×1
virtualenv ×1
volume ×1
windows ×1