无法通过Nodejs连接到Docker内的Tarantool容器

时间:2017-12-07 20:23:08

标签: javascript node.js docker tarantool

我想使用以下代码连接到tarantool cotainer:

import TarantoolConnection from 'tarantool-driver'
let connection = new TarantoolConnection('192.168.99.100:3301');
connection.ping().then((res) => {
   console.log(res);
});

在此之前我开始使用容器:

docker run -p 3301:3301 -d tarantool/tarantool:1.6

但结果我一无所获。

如果我尝试为此空间创建空格或\和索引:

connection.eval("box.schema.space.create('myspace', {if_not_exists=true, temporary=true})").then((res) => {
    console.log(res);
});

我收到此错误:

  

UnhandledPromiseRejectionWarning:未处理的承诺   rejection(拒绝ID:1):错误:此套接字已关闭

或:

  

UnhandledPromiseRejectionWarning:未处理的承诺   rejection(拒绝id:2):错误:连接将被销毁或   已经被破坏,再创造一个

正如我从错误中看到的那样,所需的套接字已经关闭,但我不明白为什么。

tarantool驱动程序的版本:

"tarantool-driver": "2.0.5",

我该如何解决?

1 个答案:

答案 0 :(得分:2)

这里有两个问题:

  1. 您应该连接到localhost:3301而不是192.168.99.100:3301
  2. 您必须在connection.connect()connection.ping()
  3. 之前使用connection.eval()

    以下是工作代码:

    const TarantoolConnection = require('tarantool-driver');
    
    let connection = new TarantoolConnection({port: 3301});
    
    connection.connect().then((res) => {
        console.log("Connected: " + res);
    
        connection.ping().then((res) => {
            console.log("Pong: " + res);
        });
    
        connection.eval("box.schema.space.create('myspace', {if_not_exists=true, temporary=true})").then((res) => {
            console.log("Space created");
        });
    });
    

    以防万一,我使用以下命令启动tarantool docker实例:

    $ docker run --rm -p 3301:3301 -t -i tarantool/tarantool:1.6