小编Nep*_*oxx的帖子

使用Docker-Compose来旋转具有不同配置的容器的多个实例

我知道您可以使用scale命令来使用docker-compose来旋转多个容器.但是,它们都将使用相同的配置.

是否可以在同一主机上使用不同配置(不同.yml文件)在同一主机上启动容器?

使用以下命令:

docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d
Run Code Online (Sandbox Code Playgroud)

只有qa.yml容器才会运行,这不是我想要的.

- 编辑 -

这是我尝试运行这两个命令时会发生什么.

$ docker-compose -f compose/dev.yml up -d
compose_mydocker_1 is up-to-date
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
905912df6e48        compose_mydocker  "/sbin/my_init"     2 days ago          Up 2 days           0.0.0.0:1234->80/tcp   compose_mydocker_1
$ docker-compose -f compose/qa.yml up -d
Recreating compose_mydocker_1...
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
3fc912201224        compose_mydocker  "/sbin/my_init"     5 seconds ago       Up 5 …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

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

Yaml多行字符串作为序列的一部分

我无法弄清楚如何使用多行字符串作为yaml序列的一部分:

foo:
  - bar
  - bar2
  - > super duper long
 string that I would like
 to have on multiple lines
  - Another item
Run Code Online (Sandbox Code Playgroud)

可能吗?

syntax yaml

16
推荐指数
1
解决办法
6704
查看次数

npm install --save,没有保存的用途是什么

我理解的差异之间npm install somethingnpm install something --save(任何人想知道,第一个将只安装的依赖,而后者将安装依赖,并把它添加到您的package.json).

但是我不明白为什么首先有一个--save选项.换句话说,为什么你想要在将它添加到package.json文件的情况下安装依赖项?为什么--save选项不是默认值?

很多网站/ npm模块/ SaaS建议使用npm install something(例如newrelic就是其中之一)安装他们的模块,我错过了什么?

编辑:从NPM 5起,--save现已在默认情况下.

node.js npm

14
推荐指数
2
解决办法
3451
查看次数

在运行时更改Guice绑定

我希望能够在运行时更改Guice注入,以支持基于用户输入的多次注入.这就是我想要实现的目标:

public interface IDao {
    public int someMethod();
}

public class DaoEarth implements IDao {
    @Override
    public int someMethod(){ ... }
}

public class DaoMars implements IDao {
    @Override
    public int someMethod(){ ... }
}

public class MyClass {
    @Inject
    private IDao myDao;

    public int myMethod(String domain) {
        //If Domain == Earth, myDao should be of the type DaoEarth

        //If Domain == DaoMars, myDao should be of the type DaoMars
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑编写自己的Provider,但我不知道如何使用该提供程序在运行时更改我的绑定.任何输入都是欢迎和赞赏:)!

更新 这是我目前提出的,它不像我想的那么漂亮,所以我仍然在寻找反馈

public class DomainProvider {
    @Inject …
Run Code Online (Sandbox Code Playgroud)

java architecture dependency-injection guice playframework-2.0

12
推荐指数
1
解决办法
6221
查看次数

使用Sinon来存根链接的Mongoose调用

我得到了如何对Mongoose模型进行存根(感谢用Sinon一个Mongoose模型进行Stubbing),但是我不太明白如何将调用存根如下:

myModel.findOne({"id": someId})
    .where("someBooleanProperty").equals(true)
    ...
    .exec(someCallback);
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

var findOneStub = sinon.stub(mongoose.Model, "findOne");
sinon.stub(findOneStub, "exec").yields(someFakeParameter);
Run Code Online (Sandbox Code Playgroud)

没有用,有什么建议吗?

mongoose node.js sinon

11
推荐指数
2
解决办法
6712
查看次数

与sinon和bluebird一起确定一个有希望的功能

在我想测试的文件中,我有以下代码:

var httpGet = Promise.promisify(require("request").get);
httpGet(endpoint, {
    auth: {bearer: req.body.access_token},
    json: true
})
    .then(...)
Run Code Online (Sandbox Code Playgroud)

现在,在我的测试中,我想确保httpGet被调用一次,并确保参数有效.在被宣传之前,我的测试看起来像这样:

beforeEach(function () {
    request.get = sinon.stub()
        .yields(null, null, {error: "test error", error_description: "fake google error."});
});

afterEach(function () {
    expect(request.get).to.have.been.calledOnce();
    var requestArgs = request.get.args[0];
    var uri = requestArgs[0];

    expect(uri).to.equal(endpoint);
    //...
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,当request.get被宣传时,这不再有效.我尝试了stubing request.getAsync(因为bluebird将"Async"附加到promisified函数),但这也不起作用.有任何想法吗?

javascript node.js promise sinon bluebird

11
推荐指数
1
解决办法
3964
查看次数

Oauth2流没有redirect_uri

我正在创建一个Android/iOS应用程序,它与Node.js服务器通信,并希望使用Google(和/或Facebook)和OAuth2在我的服务器上安全地识别它们.我查看了以下文档:https://developers.google.com/+/web/signin/server-side-flow

我不需要授权,我只需要身份验证(我只想确保调用我的Node.js服务的人是他们所说的人).为实现这一目标,如果我理解正确,我必须让用户在客户端使用Google登录,这将为他们提供一个authorization_code,然后他们可以将其提供给我的服务器.然后,我的服务器可以为access_token交换该代码,从而检索有关用户的信息.然后我保证用户就是他们所说的人.

谷歌文档(上面的链接)说:"在授权重定向URI字段中,删除默认值.它不用于这种情况."但是,对于我的服务器交换access_token的authorization_code,它需要提供一个redirect_uri我错过了什么吗?

redirect_uri例如,对于Unity游戏来说,它是无用的(因为登录Google只会打开一个新的"窗口",登录后关闭,不涉及重定向).

TL; DR如何在没有重定向的情况下使用OAuth2在我的客户端和服务器之间对用户进行身份验证?

node.js google-oauth passport-facebook passport.js

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

在复制的Redis群集中连接到主服务器和从服务器

我正在设置一个简单的1 Master - N Slaves Redis集群(低写入循环,高读取计数).如何设置它在Redis网站上有详细记录,但是,没有关于客户端(在我的情况下是Node.js服务器)如​​何处理集群的信息(或者我错过了它).我的服务器是否需要打开2个Redis连接:一个用于Master(写入),另一个用于Slave负载平衡器用于读取?Redis驱动程序是否自动处理此问题并将读取发送到从属服务器并写入主服务器?

redis node.js node-redis

6
推荐指数
1
解决办法
661
查看次数

从git仓库中删除丢失的LFS对象

我在客户端和服务器上的git仓库*中都缺少一堆LFS对象。我知道这些对象丢失了,没关系。不幸的是,这意味着git lfs fetch --all甚至git lfs push --all origin将失败。

我想通过使用虚拟文本文件替换二进制文件或完全删除指针来清除存储库中的“损坏的指针”。我也知道这涉及到重写历史记录,这也很好。

最好的进行方法是什么?

*为了澄清,我丢失了服务器上的一些 LFS文件,但不是全部,也不是这些文件的所有修订版。

例如,我已经在3次提交中对foo.png进行了修改:

  • foo.png(版本1,LFS Sha:03cfd743)
  • foo.png(版本2,LFS Sha:661f0797)
  • foo.png(Version 3,LFS Sha:5fa2f122)

LFS服务器不再具有foo.png版本2,因此我想从历史记录中删除该提交。不幸的是,git lfs不会告诉我哪个提交被破坏了,只是告诉我661f0797丢失了。

(记录下来,我发现了丢失的文件,所以我不再有这个问题,但是解决方案应该仍然很有趣!)

git gitlab git-lfs

6
推荐指数
1
解决办法
594
查看次数

在间谍上使用 doThrow 时,Mockito 不会抛出正确的异常

我正在使用 PowerMock (Mockito) 模拟对同一类中另一个方法的子调用。更具体地说,我有这样的事情:

public class myClass{
    public void MyMethod1(){
        //do something
        try{
            myMethod2();
        } catch (MyExceptionType e) {
            //do something
            throw e;
        }
    }

    public int MyMethod2() throws MyExceptionType {...}
}
Run Code Online (Sandbox Code Playgroud)

现在在我的单元测试中,我可以使用间谍来模拟 MyMethod2 的响应,并执行类似doReturn(1).when(myClass).myMethod2(). 然而,当我做这样的事情时,奇怪的事情发生了doThrow(myExeptionType).when(myClass).myMethod2():当我在测试期间调用 myClass.myMethod1() 时,它会抛出 NullPointerException,但奇怪的是,如果我使用调试器并检查throw e, e 是 MyExceptionType 类型的正确异常。

这是该 NullPointerException 的堆栈跟踪:

java.lang.NullPointerException
    at java.util.Arrays$ArrayList.<init>(Arrays.java:2842)
    at java.util.Arrays.asList(Arrays.java:2828)
    at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.filter(StackTraceFilter.java:31)
    at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.filter(ConditionalStackTraceFilter.java:23)
    at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:29)
    at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108)
    at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36)
    at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93)
    at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)
    at org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:51)
    at com.amazon.inventory.workflow.common.wrapper.FCContainerServiceWrapper$$EnhancerByMockitoWithCGLIB$$a0f00456.getContainerHierarchyDown(<generated>)
    at com.amazon.inventory.workflow.common.wrapper.containerservice.GetContainerHierarchyDownTest.runTest(GetContainerHierarchyDownTest.java:50) …
Run Code Online (Sandbox Code Playgroud)

java junit junit4 mockito powermock

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