我知道您可以使用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) 我无法弄清楚如何使用多行字符串作为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)
可能吗?
我理解的差异之间npm install something和npm install something --save(任何人想知道,第一个将只安装的依赖,而后者将安装依赖,并把它添加到您的package.json).
但是我不明白为什么首先有一个--save选项.换句话说,为什么你想要在不将它添加到package.json文件的情况下安装依赖项?为什么--save选项不是默认值?
很多网站/ npm模块/ SaaS建议使用npm install something(例如newrelic就是其中之一)安装他们的模块,我错过了什么?
编辑:从NPM 5起,--save现已在默认情况下.
我希望能够在运行时更改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
我得到了如何对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)
没有用,有什么建议吗?
在我想测试的文件中,我有以下代码:
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函数),但这也不起作用.有任何想法吗?
我正在创建一个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在我的客户端和服务器之间对用户进行身份验证?
我正在设置一个简单的1 Master - N Slaves Redis集群(低写入循环,高读取计数).如何设置它在Redis网站上有详细记录,但是,没有关于客户端(在我的情况下是Node.js服务器)如何处理集群的信息(或者我错过了它).我的服务器是否需要打开2个Redis连接:一个用于Master(写入),另一个用于Slave负载平衡器用于读取?Redis驱动程序是否自动处理此问题并将读取发送到从属服务器并写入主服务器?
我在客户端和服务器上的git仓库*中都缺少一堆LFS对象。我知道这些对象丢失了,没关系。不幸的是,这意味着git lfs fetch --all甚至git lfs push --all origin将失败。
我想通过使用虚拟文本文件替换二进制文件或完全删除指针来清除存储库中的“损坏的指针”。我也知道这涉及到重写历史记录,这也很好。
最好的进行方法是什么?
*为了澄清,我丢失了服务器上的一些 LFS文件,但不是全部,也不是这些文件的所有修订版。
例如,我已经在3次提交中对foo.png进行了修改:
LFS服务器不再具有foo.png版本2,因此我想从历史记录中删除该提交。不幸的是,git lfs不会告诉我哪个提交被破坏了,只是告诉我661f0797丢失了。
(记录下来,我发现了丢失的文件,所以我不再有这个问题,但是解决方案应该仍然很有趣!)
我正在使用 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) node.js ×5
java ×2
sinon ×2
architecture ×1
bluebird ×1
docker ×1
git ×1
git-lfs ×1
gitlab ×1
google-oauth ×1
guice ×1
javascript ×1
junit ×1
junit4 ×1
mockito ×1
mongoose ×1
node-redis ×1
npm ×1
passport.js ×1
powermock ×1
promise ×1
redis ×1
syntax ×1
yaml ×1