小编Fre*_*iot的帖子

Docker run vs create

docker rundocker create命令有什么区别?

我经常使用run但有时在我看到的文档中create.

码头工人--help告诉

create    Create a new container
run       Run a command in a new container
Run Code Online (Sandbox Code Playgroud)

这是否意味着run在我们需要将命令传递给新容器时使用?那么目的是create什么?

docker

82
推荐指数
6
解决办法
3万
查看次数

MongoDB + nodejs:如何查询ISODate字段?

我使用nodejs与node-mongodb-native驱动程序(http://mongodb.github.io/node-mongodb-native/).

我有一个日期属性存储为ISODate类型的文档.

通过nodejs,我正在使用此查询:

db.collection("log").find({
    localHitDate: { 
            '$gte': '2013-12-12T16:00:00.000Z',
            '$lt': '2013-12-12T18:00:00.000Z' 
    }
})
Run Code Online (Sandbox Code Playgroud)

它什么都不返回.为了使它工作,我需要做以下事情:

db.collection("log").find({
    localHitDate: {
            '$gte': ISODate('2013-12-12T16:00:00.000Z'),
            '$lt': ISODate('2013-12-12T18:00:00.000Z')
    }
})
Run Code Online (Sandbox Code Playgroud)

但是ISODate在我的nodejs代码中无法识别.

那么如何通过我的nodejs程序对mongo日期字段进行查询呢?

谢谢

mongodb node.js isodate

44
推荐指数
2
解决办法
5万
查看次数

Angularjs $ http似乎不理解响应中的"Set-Cookie"

我有一个nodejs用Passport模块表示REST api进行身份验证.登录方法(GET)在标头中返回一个cookie.当我从Chrome调用它时,它运行正常,我的cookie在我的浏览器中设置.

但是如果我通过Angularjs的$ http调用它,则cookie不会被设置.

Set-Cookie:connect.sid=s%3Ad7cZf3DSnz-IbLA_eNjQr-YR.R%2FytSJyd9cEhX%2BTBkmAQ6WFcEHAuPJjdXk3oq3YyFfI; Path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

如您所见,Set-Cookie存在于http服务响应的标头中.

也许HttpOnly可能是这个问题的根源?如果是,我该如何更改?这是我的快速配置:

app.configure(function () {
    app.use(allowCrossDomain);
    app.use(express.bodyParser());
    app.use(express.cookieParser())
    app.use(express.session({ secret: 'this is a secret' }));
    app.use(flash());
    //passport init
    app.use(passport.initialize());
    app.use(passport.session());
    app.set('port', process.env.PORT || 8080);
});
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

node.js express angularjs

25
推荐指数
3
解决办法
2万
查看次数

Nodejs + mongodb:如何查询$ ref字段?

我使用带有nodejs REST服务的MongoDB,它暴露了我存储在里面的数据.我有一个关于如何查询使用$ ref的数据的问题.

以下是Object的示例,其中包含对其他对象(详细信息)的引用:

{
    "_id" : ObjectId("5962c7b53b6a02100a000085"),
    "Title" : "test",
    "detail" : {
        "$ref" : "ObjDetail",
        "$id" : ObjectId("5270c7b11f6a02100a000001")
    },
    "foo" : bar
}
Run Code Online (Sandbox Code Playgroud)

实际上,使用Node.js和mongodb模块,我执行以下操作:

db.collection("Obj").findOne({"_id" : new ObjectID("5962c7b53b6a02100a000085"},
function(err, item) {
    db.collection(item.$ref).findOne({"_id" : item.$id}, function(err,subItem){
        ...
    });
});
Run Code Online (Sandbox Code Playgroud)

实际上我做了2个查询,得到了2个对象.这是一种"懒惰的装载"(不完全是,几乎)

我的问题很简单:是否可以在一个查询中检索整个对象图?

谢谢

javascript mongodb node.js dbref

9
推荐指数
3
解决办法
1万
查看次数

AngularJS $ httpProvider未定义

我试图使用拦截器的基本样本,所以我盯着一小段代码,但没有成功:

var app = angular.module('app',[]).
  config(['$routeProvider','$locationProvider', function($routeProvider,$location) {
    $routeProvider.
    when('/home', {templateUrl: 'home.html',   controller: homeCtrl}).
    when('/login', {templateUrl: 'login.html',   controller: loginController}).
    otherwise({redirectTo : '/home' });
}]);


app.config(function ($httpProvider) {
    $httpProvider.interceptors.push('httpRequestInterceptor');
});
Run Code Online (Sandbox Code Playgroud)

当我启动索引页面时,我在控制台中有一条错误消息:

Uncaught TypeError: Cannot call method 'push' of undefined from app 
Run Code Online (Sandbox Code Playgroud)

任何的想法?

谢谢

angularjs

8
推荐指数
2
解决办法
2万
查看次数

GraphQL如何避免输入和输出类型之间的重复代码

我是GraphQL的新手,但我真的很喜欢它.现在,我正在玩接口和工会,我面临着突变的问题.

假设我有这个架构:

interface FoodType {
    id: String
    type: String
    composition: [Ingredient]
  }

  type Pizza implements FoodType {
    id: String
    type: String
    pizzaType: String
    toppings: [String]
    size: String
    composition: [Ingredient]
  }

  type Salad implements FoodType {
    id: String
    type: String
    vegetarian: Boolean
    dressing: Boolean
    composition: [Ingredient]
  }

  type BasicFood implements FoodType {
    id: String
    type: String
    composition: [Ingredient]
  }

  type Ingredient {
      name: String
      qty: Float
      units: String
  }
Run Code Online (Sandbox Code Playgroud)

现在,我想创造新的食品,所以我开始做这样的事情:

type Mutation {
    addPizza(input:Pizza):FoodType
    addSalad(input:Salad):FoodType
    addBasic(input:BasicFood):FoodType
}
Run Code Online (Sandbox Code Playgroud)

这不起作用有两个原因:

  1. 如果我想将对象作为参数传递,则该对象必须是"输入"类型.但"披萨","沙拉"和"基本食品"只是"类型".
  2. 输入类型无法实现接口.

所以,我需要修改我之前的架构,如下所示: …

interface apollo graphql

8
推荐指数
1
解决办法
1259
查看次数

Helm升级使用相同的图表版本,但不同的Docker图像标记

我对Helm升级有疑问.我正在使用图表foo-1.0.0,它使用docker图像栏部署一个pod:4.5.1.

我在版本1.0.0中基于此图表foo发布了"myrelease"(带有一个栏:4.5.1在里面运行).

现在,我对条形图进行修复,重建图像栏:4.5.2,更改图表中的图像,但我没有碰到它的版本.它仍然是foo-1.0.0

我发布:

$ helm upgrade myrelease repo/foo --version 1.0.0
Run Code Online (Sandbox Code Playgroud)

我的问题是升级后,我的pod仍在运行栏:4.5.1而不是4.5.2

是分蘖中的"缓存"吗?似乎分蘖没有再次下载foo-1.0.0.有没有办法强迫它下载?

kubernetes kubernetes-helm

8
推荐指数
1
解决办法
1万
查看次数

具有副本集的Mongodump:如何强制使用辅助?

我的MongoDB副本集备份有一个奇怪的问题.我有2台服务器(一台主服务器和一台辅助服务器),我每2小时运行一次备份任务.

我用这个: mongodump.exe --db MyBase --out "d:\Backups"

但是,当我运行此备份时,我的客户端应用程序(c#)会抛出这样的错误:

MongoDB.Driver.MongoConnectionException:无法连接到与读取首选项主要匹配的副本集的成员

我认为mongodump在客户端应用程序上没有这样的影响.所以,那就是说.

我想仅在辅助服务器上强制执行备份操作.我该怎么办?运行的命令是什么?

谢谢您的帮助.

mongodb mongodump replicaset

7
推荐指数
2
解决办法
8508
查看次数

WEB API 2自托管主机名问题

我试图制作一个自托管的web api服务.我按照教程,它在我的本地计算机上工作正常.

localhost/api/values对预期的JSON响应很好.

现在,我有一个绑定到DNS"myserver.mycompany.com"的服务器.当我在此服务器上启动WebApi 2服务并尝试调用myserver.mycompany.com/api/values时,我找不到404页面错误.

如果我在这个服务器上本地浏览并调用localhost/api/values url它可以正常工作.

这是Startup类的代码:

using Owin;
using System.Web.Http;

namespace SelfHostedWebApi2
{
public class Startup
{
    // This code configures Web API. The Startup class is specified as a type
    // parameter in the WebApp.Start method.
    public void Configuration(IAppBuilder appBuilder)
    {
        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        appBuilder.UseWebApi(config);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

以下是我启动服务器的方式:

using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;

namespace …
Run Code Online (Sandbox Code Playgroud)

binding hostname self-hosting asp.net-web-api2

7
推荐指数
1
解决办法
4576
查看次数

GraphQL:使用接口管理突变的最佳方式?

我是 GraphQL 的新手,但我真的很喜欢它。现在我在玩接口和联合,我面临着突变的问题。

假设我有这个架构:

interface FoodType {
  id: String
  type: String
}

type Pizza implements FoodType {
  id: String
  type: String
  pizzaType: String
  toppings: [String]
  size: String
}

type Salad implements FoodType {
  id: String
  type: String
  vegetarian: Boolean
  dressing: Boolean
}

type BasicFood implements FoodType {
  id: String
  type: String
}
Run Code Online (Sandbox Code Playgroud)

现在,我想创造新的食物,所以我开始做这样的事情:

type Mutation {
    addPizza(input:Pizza):FoodType
    addSalad(input:Salad):FoodType
    addBasic(input:BasicFood):FoodType
}
Run Code Online (Sandbox Code Playgroud)

这不起作用有两个原因:

  1. 如果我想传递一个对象作为参数,这个对象必须是“输入”类型。但是“Pizza”、“Salad”和“BasicFood”只是“类型”。
  2. 输入类型不能实现接口。

所以,我的问题是:如何在接口的这种上下文中处理突变而不必过多地复制类型?我想避免使用 Pizza 类型的查询和 InputPizza 类型的突变。

感谢您的帮助。

interface mutation apollo graphql

5
推荐指数
1
解决办法
1612
查看次数

Helm chart 最佳实践:是否使用最新标签

我想知道您在管理掌舵图表版本方面的最佳实践(或只是您的实践)是什么。

我想知道处理应用程序版本控制、持续集成/交付和图表打包的最佳方法是什么。

今天,我有许多微服务在生活。每个都有自己的生命周期,并且在自己的 git 存储库中有自己的版本控制。

此外,我们选择为所有图表使用一个 git 存储库。

现在,我们也有选择:

  • 每次微服务更改时,都会构建一个新的 docker 镜像并创建一个新版本的图表(只有在 value.yaml 文件中更改的 docker 镜像的标签)
  • 或者,即使微服务发生变化,我们也不会创建图表的新版本。图表中 docker 标签的默认值设置为“default”,当我们要升级图表时,我们必须使用--set image.tag=vx.x.x标志。

从“操作”的角度来看,第一种方法的好处是,我们随时都知道集群上正在运行的每个图表(和每个 docker 映像)的版本。缺点是在某个时间我们将有每个图表的许多版本,而只有一个 docker 标签版本发生了变化。

另一方面,第二种方法的好处是,唯一使图表版本发生变化的是图表代码本身的修改,而不是应用程序的更改。它大大减少了每个图表的“无用”高版本号。缺点是我们必须在安装/升级时覆盖 docker 标签,并且我们失去了对集群上运行的版本的可观察性(在灾难恢复计划的情况下很有用)。

那么,你的做法是什么?也许是一种混合方法?

感谢您的帮助

versioning continuous-integration continuous-deployment kubernetes kubernetes-helm

5
推荐指数
1
解决办法
2988
查看次数

Istio和(或与之相对)Nginx入口控制器

我正在测试Istio,目前正在测试路由流量的“ canary”功能。

为了进行测试,我创建了一个由5个微服务(serviceA,serviceB,serviceC,serviceD,serviceE)组成的小型服务网格。每个人都可以呼叫其他人。我只传递了A,E,C,B,B,D之类的路径,并且请求遵循该路径。为了从集群外部调用我的servicemesh,我有一个Nginx Ingress Controller,其Ingress规则指向serviceA pod。

一切正常。

我面临的问题与使用自定义标头匹配的流量切换有关,如下所示:

kind: VirtualService
metadata:
  name: ServiceA
  namespace: demo
  labels:
    app: demo
spec:
  hosts:
  - service-a
  http:
  - route:
    - destination:
        host: service-a
        subset: v1
  - match:
    - headers:
        x-internal-request:
          exact: true
    route:
    - destination:
        host: service-a
        subset: v2
Run Code Online (Sandbox Code Playgroud)

所以在这里,当我将自定义标头x-internal-request设置为true 时,我想尝试将流量路由到ServiceA的v2版本。

问题

  • 为了使用此功能,我的服务是否必须知道x-internal-header,并将它们传递给请求中的下一个服务?还是因为Istio为他们完成工作,他们不需要处理它?

  • 为了使用此功能,我是否需要使用Istio Ingress Controller(带有Istio网关)而不是Nginx Ingress Controller?

今天,我正在使用Nginx Ingress Controller公开一些服务。我们之所以选择Nginx,是因为它具有“外部授权”之类的功能,可以节省很多工作,并且如果我们需要使用Istio Ingress控制器,我不确定它是否提供与Nginx相同的功能。

也许有一条我看不到的中间道路

谢谢您的帮助

istio nginx-ingress

4
推荐指数
1
解决办法
5990
查看次数

MongoDB、GraphQL 和 ISODate 类型

我有关于 MongoDB ISODate 类型和 GraphQL 的问题。我需要mutation在我的 gql 架构中声明一个允许在我的 Mongo 数据库中添加文档的文件。

该文档具有 ISODate 属性,但在我的 gql 架构中,我使用的是String

mutation addSomething(data: SomeInput)

type SomeInput {
    field1: String
    field2: Int
    created: String
}

Run Code Online (Sandbox Code Playgroud)

我的问题是,在新文档中,该created字段采用字符串格式(不是 ISODate),而我对此是期望的。但我想知道如何让它插入 ISODate。我可以在某个地方使用“自定义类型”来代替 String 吗?

谢谢

PS:我正在使用nodeJS和apollo库。

编辑 1:尝试使用 graphql-iso-date 包

我发现这个包https://www.npmjs.com/package/graphql-iso-date添加了 3 个日期自定义类型。

这是我的 gql 架构:

const { gql } = require('apollo-server');
const { GraphQLDateTime } = require('graphql-iso-date')

const typeDefs = gql`

scalar GraphQLDateTime

type Resto {
    restaurant_id: ID!
    borough: String
    cuisine: String …
Run Code Online (Sandbox Code Playgroud)

mongodb graphql

3
推荐指数
1
解决办法
3544
查看次数