所以我创建了一个新的EC2实例并在其上安装了docker。
我从(https://github.com/commonsearch/cosr-front/blob/master/INSTALL.md)部署代码并按照安装说明进行操作。
安装成功,我启动了服务器:
[ec2-user@ip-172-30-0-127 cosr-front]$ make docker_devserver
docker run -e DOCKER_HOST --rm -v "/home/ec2-user/cosr-front:/go/src/github.com/commonsearch/cosr-front:rw" -w /go/src/github.com/commonsearch/cosr-front -p 9700:9700 -i -t commonsearch/local-front make devserver
mkdir -p build
go build -o build/cosr-front.bin ./server
GODEBUG=gctrace=1 COSR_DEBUG=1 ./build/cosr-front.bin
2016/05/28 16:32:38 Using Docker host IP: 172.17.0.1
2016/05/28 16:32:38 Server listening on 127.0.0.1:9700 - You should open http://127.0.0.1:9700 in your browser!
好吧,现在当我想从外面访问它时,我不能!甚至没有卷曲本地服务器。
当我运行docker ps
时,它会给我正确的端口转发:
[ec2-user@ip-172-30-0-127 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a9f77e1eeb1 commonsearch/local-front "make devserver" 4 minutes ago Up 4 minutes 0.0.0.0:9700->9700/tcp stoic_hopper
9ff00fe3e70d commonsearch/local-elasticsearch-devindex "/docker-entrypoint.s" 4 minutes ago Up 4 minutes 0.0.0.0:39200->9200/tcp, 0.0.0.0:39300->9300/tcp kickass_wilson
这些是我的码头图片:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 3e205118cd3f 17 minutes ago 853.3 MB
<none> <none> 1d233da1fa59 2 hours ago 955.7 MB
debian jessie ce58426c830c 4 days ago 125.1 MB
commonsearch/local-front latest 30de7ab48d43 7 weeks ago 1.024 GB
commonsearch/local-elasticsearch-devindex latest b1156ada5a24 11 weeks ago 383.2 MB
commonsearch/local-elasticsearch latest 808e72f49b4a 3 months ago 355.2 MB
我试过禁用ipv6并且所有类型的废话谷歌都提供给我,但没有成功。
有什么想法吗?
编辑:
另外,如果我输入前端的docker容器(使用docker exec),那么我可以PING和CULR前端。
但我不能从外面(也不是ssh,而不是我家用电脑使用浏览器)。
我的泊坞版:
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5/1.9.1
Built:
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5/1.9.1
Built:
OS/Arch: linux/amd64
答案 0 :(得分:4)
我在github发了一个问题,因为一个人救了一天。
这是他的回应:
服务器侦听127.0.0.1:9700 您的应用程序正在侦听localhost。 localhost的范围限定为容器本身。因此,为了能够连接到它,您必须在容器内。 要解决此问题,您需要让应用程序在0.0.0.0上进行侦听。
答案 1 :(得分:1)
127.0.0.1是本地(EC2)实例的环回地址。我刚刚按照相同的说明重新创建了您的问题,并在EC2实例的docker容器中设置了服务器。
如果你打开另一个ssh会话到你的EC2实例,你可以卷曲环回地址,它只是吐出下面显示的HTML。
<!DOCTYPE html><html lang="en"><head><title>
Common Search
</title><meta content="/apple-touch-icon-precomposed.png" itemprop="image"><link href="/favicon.ico" rel="shortcut icon"><!-- CSS: This will be replaced in templates.go:preprocessTemplate() by the inline, compiled CSS
if the file build/static/css/index.css exists --><link rel="stylesheet" href="/css/global.css"/><link rel="stylesheet" href="/css/header.css"/><link rel="stylesheet" href="/css/footer.css"/><link rel="stylesheet" href="/css/hits.css"/><link rel="stylesheet" href="/css/responsive.css"/><!-- ENDCSS --><meta name="viewport" content="width=device-width, initial-scale=1"></head><body class="full"><header id="h"><div class="about"><a href="https://about.commonsearch.org/" tabindex="1">About</a></div><form id="f" action="/" method="GET" data-init="{"q":"","p":1,"g":""}"><a href="/" id="logo" tabindex="2">Common Search</a><div id="w"><div id="qw"><input id="q" name="q" type="text" size="60" value="" autofocus tabindex="3"/></div><span id="g"><select name="g" tabindex="4"><option value="ar">AR</option><option value="de">DE</option><option selected value="en">EN</option><option value="es">ES</option><option value="fr">FR</option><option value="it">IT</option><option value="ja">JA</option><option value="ko">KO</option><option value="nl">NL</option><option value="pl">PL</option><option value="pt">PT</option><option value="ru">RU</option><option value="vi">VI</option><option value="zh">ZH</option><option value="all">ALL</option></select></span><input id="s" type="submit" value="🔍" tabindex="5"/></div></form></header><div id="hits"></div><div id="dbg"></div><div id="pager" data-page="1"></div><script src="/js/index.js" type="text/javascript"></script></body></html>
但我怀疑这是你真正想要的......
如果您希望能够从您(或任何其他)计算机访问托管服务器,则需要编辑EC2实例的安全组。
在AWS控制台左侧的导航栏中,选择“网络和电子邮件”。安全 - &gt;安全组。选择适用于当前EC2实例的安全组(假设您使用启动向导创建它,它将具有如下名称:'launch-wizard-1 created 2016-05-28T12:57:23.487-04:00') 。在控制台的下半部分,选择“入站”选项卡。编辑新规则以允许来自任何(或特定范围)IP的端口9700上的TCP。生成的条目应如下所示:
我的TCP规则设置为允许来自该端口上任意IP地址的入站流量,出于安全考虑,您可能希望以不同方式对其进行配置。
设置规则后,您应该能够在EC2实例的公共IP上访问Web服务器(可以在AWS控制台的Instances页面上找到)。您应该访问的地址应为:9700
希望这有帮助!