Docker Node JS安装

时间:2015-08-17 02:10:45

标签: node.js docker boot2docker

我是docker的新手,我正在尝试按照他们列出的节点js教程进行操作:https://docs.docker.com/examples/nodejs_web_app/

我遵循本教程,一切似乎都很好,直到测试部分,我不能卷曲到指定的端口。

$ curl -i localhost:49160
curl: (7) Failed to connect to localhost port 49160: Connection refused

$ docker ps
CONTAINER ID        IMAGE                          COMMAND                CREATED             STATUS              PORTS                     NAMES
21e727bc5a7d        username/docker-test   "node /src/index.js"   13 minutes ago      Up 13 minutes       0.0.0.0:49160->8080/tcp   gloomy_heisenberg
$ docker logs 21e727bc5a7d 
Running on localhost:8080

$ docker exec -it 21e727bc5a7d bash
[root@21e727bc5a7d /]# netstat -tulpn 
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/node'

不确定我是否对某些内容感到困惑或如何解决此问题,任何想法?

5 个答案:

答案 0 :(得分:11)

这是解决方案:

  1. 运行这样的应用程序:

    docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello

    输出应该说是收听端口8080。 这意味着应用程序正在运行

  2. 打开另一个docker CLI终端并输入:

    docker-machine ls

    您将看到IP地址和端口。示例:192.168.99.100:<some-number>

  3. 转到浏览器并输入IP地址和导出的端口号。

    在这种情况下,192.168.99.100:49160和您的网站应该会出现。

  4. 希望它有所帮助。

答案 1 :(得分:6)

我遇到了同样的问题,发现它是由于boot2docker没有将我的 localhost 转发到运行Docker的虚拟机。

找出运行Docker的VM的IP,如下所示:

$ boot2docker ip

你会看到如下输出:

$ 192.168.99.102

通过打印输出,您可以在该IP上卷曲您指定的端口。例如:

$ curl -i 192.168.99.102:49160

答案 2 :(得分:3)

如果您使用的是Mac OS X并使用Docker Toolbox安装了docker,则可以使用:

use PayPal\Api\OpenIdSession;

 $baseUrl =  'http://www.sweegy.net/Controler/callbak_controller.php'; 

    //Get Authorization URL returns the redirect URL that could be used to get user's consent
$redirectUrl = OpenIdSession::getAuthorizationUrl(
    $baseUrl,
    array('openid', 'profile', 'address', 'email', 'phone',
        'https://uri.paypal.com/services/paypalattributes', 'https://uri.paypal.com/services/expresscheckout'),
    null,
    null,
    null,
    $apiContext
);

    echo  $redirectUrl  ;

答案 3 :(得分:2)

我至少可以告诉你如何解决这个问题。

首先检查日志,您需要容器ID才能执行此操作。您可以使用docker ps

获取容器的ID

运行docker <id> logs以查看日志。您的命令可能会返回错误。

如果您想仔细查看,可以在容器上启动BASH shell。运行此命令docker exec -it <id> bash,这将为您提供容器上的shell以进行故障排除。 shell是容器的同一个实例,因此您可以对正在运行的服务进行故障排除。

答案 4 :(得分:2)

  

点击命令查找docker-machine

IP地址
$ docker-machine ls
  

输出将类似于

NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.10.3
  

现在从主机运行您的应用程序

$ curl -i 192.168.99.100:49160