Bash 无法到达gcloud appengine devserver的端口
为了进行测试,我尝试在docker内部运行gcloud 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 & 为
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容器中运行应用程序的简单案例,这似乎对我有效。