什么是 Docker Run-it 标志?

对不起,如果我的问题相当愚蠢,我不能在互联网上找到解释(我有重大的误解这一点)。

117945 次浏览

即使添加了 response Type,我也处理了好几天都没有成功。

-it--interactive + --tty的缩写。当你使用这个命令 docker run时,它会带你直接进入容器。

我终于明白了。

-d--detach的缩写,这意味着您只需要运行容器,然后从中运行 分离。实际上,您在后台运行容器。

确保在后端脚本中没有将头定义为-(“ Content-Type: application/json) ;

编辑: 因此,如果您使用 -itd运行 Docker 容器,它会同时运行 -it选项并将您与容器分离。因此,即使没有任何默认应用程序运行,容器仍将在后台运行。

这里的关键是“互动”这个词。如果省略该标志,容器仍将执行 /bin/bash,但会立即退出。对于标志,容器执行 /bin/bash,然后耐心地等待您的输入。

我的 Angular 申请也遇到了同样的问题。我在我的应用程序中使用 RocketChat REST API,我试图使用 rooms.createDiscussion,但是出现了如下错误。

ERROR Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":200,"statusText":"OK","url":"myurl/rocketchat/api/v1/rooms.createDiscussion","ok":false,"name":"HttpErrorResponse","message":"Http failure during parsing for myrul/rocketchat/api/v1/rooms.createDiscussion","error":{"error":{},"text":"
但是没有一个管用。最后我发现问题出在我的 RocketChat 安装上。正如在 火箭聊天改变日志中提到的,API rooms.createDiscussion是在1.0.0版本中引入的,不幸的是,我使用的是一个较低的版本。

我已经尝试了一些事情,如改变 responseType: 'text',但没有一个工作。最后我发现问题出在我的 RocketChat 安装上。正如在 火箭聊天记录中提到的,API rooms.createDiscussion是在1.0.0版本中引入的,不幸的是,我使用的是一个较低的版本。

我的建议是,在您花时间修复角度代码中的错误之前,检查 REST API 是否正常工作。我用 curl命令检查了一下。

curl -H "X-Auth-Token: token" -H "X-User-Id: userid" -H "Content-Type: application/json" myurl/rocketchat/api/v1/rooms.createDiscussion -d '{ "prid": "GENERAL", "t_name": "Discussion Name"}'

我的建议是,在您花时间修复角度代码中的错误之前,检查 REST API 是否正常工作。我用 curl命令检查了一下。

curl -H "X-Auth-Token: token" -H "X-User-Id: userid" -H "Content-Type: application/json" myurl/rocketchat/api/v1/rooms.createDiscussion -d '{ "prid": "GENERAL", "t_name": "Discussion Name"}'

我也得到了一个无效的 HTML 作为响应。

<!DOCTYPE html>
<html>
<head>
<meta name="referrer" content="origin-when-crossorigin">
<script>/* eslint-disable */


'use strict';
(function() {
var debounce = function debounce(func, wait, immediate) {

我也得到了一个无效的 HTML 作为响应。

<!DOCTYPE html>
<html>
<head>
<meta name="referrer" content="origin-when-crossorigin">
<script>/* eslint-disable */


'use strict';
(function() {
var debounce = function debounce(func, wait, immediate) {

代替以下有效的 JSON 响应。

{
"discussion": {
"rid": "cgk88DHLHexwMaFWh",
"name": "WJNEAM7W45wRYitHo",
"fname": "Discussion Name",
"t": "p",
"msgs": 0,
"usersCount": 0,
"u": {
"_id": "rocketchat.internal.admin.test",
"username": "rocketchat.internal.admin.test"
},
"topic": "general",
"prid": "GENERAL",
"ts": "2019-04-03T01:35:32.271Z",
"ro": false,
"sysMes": true,
"default": false,
"_updatedAt": "2019-04-03T01:35:32.280Z",
"_id": "cgk88DHLHexwMaFWh"
},
"success": true
}

代替以下有效的 JSON 响应。

{
"discussion": {
"rid": "cgk88DHLHexwMaFWh",
"name": "WJNEAM7W45wRYitHo",
"fname": "Discussion Name",
"t": "p",
"msgs": 0,
"usersCount": 0,
"u": {
"_id": "rocketchat.internal.admin.test",
"username": "rocketchat.internal.admin.test"
},
"topic": "general",
"prid": "GENERAL",
"ts": "2019-04-03T01:35:32.271Z",
"ro": false,
"sysMes": true,
"default": false,
"_updatedAt": "2019-04-03T01:35:32.280Z",
"_id": "cgk88DHLHexwMaFWh"
},
"success": true
}

因此,在 更新到最新的火箭聊天之后,我能够使用上面提到的 REST API。