Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 无法到达gcloud appengine devserver的端口_Bash_Gcloud_Devserver - Fatal编程技术网

Bash 无法到达gcloud appengine devserver的端口

Bash 无法到达gcloud appengine devserver的端口,bash,gcloud,devserver,Bash,Gcloud,Devserver,为了进行测试,我尝试在docker内部运行gcloud devserver,并给出以下注释: sudo /usr/local/gcloud/google-cloud-sdk/bin/java_dev_appserver.sh --disable_update_check --port=8888 --help /app/target/qdacity-war/ 2>&1 | sudo tee /app/logs/devserver.log > /dev/null & 为

为了进行测试,我尝试在docker内部运行gcloud devserver,并给出以下注释:

sudo /usr/local/gcloud/google-cloud-sdk/bin/java_dev_appserver.sh --disable_update_check --port=8888 --help /app/target/qdacity-war/ 2>&1 | sudo tee /app/logs/devserver.log > /dev/null &
为了检查devserver是否已成功启动,我使用以下脚本:

#!/bin/bash
# This script waits until the port 8888 is open.

SERVER=localhost
PORT=8888

TIMEOUT=180
TIME_INTERVAL=2

PORT_OPEN=1
PORT_CLOSED=0

time=0
isPortOpen=0

while [ $time -lt $TIMEOUT ] && [ $isPortOpen -eq $PORT_CLOSED ];
do 

    # Connect to the port
    (echo > /dev/tcp/$SERVER/$PORT) >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        isPortOpen=$PORT_CLOSED
    else
        isPortOpen=$PORT_OPEN
    fi

    time=$(($time+$TIME_INTERVAL))
    sleep $TIME_INTERVAL
done

if [ $isPortOpen -eq $PORT_OPEN ]; then
    echo "Port is open after ${time} seconds."

    # Give the server more time to properly start
    sleep 10
else
    echo "Reached the timeout (${TIMEOUT} seconds). The port ${SERVER}:${PORT} is not available."

    exit 1
fi
运行完所有测试后,我刚回来:

Reached the timeout (180 seconds). The port localhost:8888 is not available.
我无法确定启动devserver或查询端口是否有任何问题。 有人有想法或解决方案吗?
谢谢

默认情况下,通过只接受localhost |环回通信,您无法远程访问服务器

请尝试添加
--地址=0.0.0.0
: ()到您的
java_dev_appserver.sh
命令

例子 使用了谷歌样本的变体

使用mvn appengine运行此命令:运行(以确认其工作并构建WAR)

然后
/path/to/bin/java_dev_appserver.sh./target/hellofredie-0.1
(确认它与本地开发服务器一起工作)

然后使用Google的CloudSDK容器映像(),将先前生成的WAR目录装入其中,并在
:9999上运行服务器:

docker运行\
--互动的\
--tty\
--发布=9999:9999\
--卷=${PWD}/target:/target\
谷歌/云sdk\
/usr/lib/googlecloudsdk/bin/java_dev_appserver.sh\
--地址=0.0.0.0\
--端口=9999\
./target/hellofredie-0.1
我可以卷曲端点:

curl\
--沉默的\
--位置\
--写出“%{http_code}”\
--输出/dev/null\
本地主机:9999
返回
200

并且,运行使用
PORT=9999调整的脚本将返回:

端口在2秒后打开。

lsof-i:8888的输出是什么?这将为您提供当前正在该端口上侦听的任何进程的进程ID(PID)。您是否尝试使用其他端口运行应用程序服务器?@Gerb谢谢,我使用了“sudo lsof-I:8888”,但我没有得到任何输出,没有表或错误:/@AndresS谢谢,但更改端口会导致相同的结果。我使用了一个简单的HelloFreddie示例,生成一个WAR(目录)并运行
java_dev_appserver.sh--address=0.0.0.0--port=9999./target/hellofredie-0.1
docker-run--interactive--tty--publish=9999:9999--volume=${PWD}/target google/cloud sdk
中,并且我能够按照预期卷曲端点。因此,对于在docker容器中运行应用程序的简单案例,这似乎对我有效。