Не удается связаться с портом gcloud appengine devserver - PullRequest
0 голосов
/ 31 октября 2019

для тестирования Я пытаюсь запустить 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 или запросом порта. У кого-нибудь есть идея или решение? Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2019

По умолчанию, принимая только локальный | петлевой трафик, вы не можете получить удаленный доступ к серверу.

Пожалуйста, попробуйте добавить --address=0.0.0.0: ( ссылка ) к вашему java_dev_appserver.sh command.

Пример

Использован вариант образца HelloWorld от Google.

Выполнить это с помощью mvn appengine:run (чтобы подтвердить, что он работает и построитьWAR).

Затем /path/to/bin/java_dev_appserver.sh ./target/hellofreddie-0.1 (чтобы убедиться, что он работает с локальным сервером разработки).

Затем использовался образ контейнера Google SDK Cloud ( ссылка ), смонтированранее сгенерировал в него каталог WAR и запустил сервер на :9999:

docker run \
--interactive \
--tty \
--publish=9999:9999 \
--volume=${PWD}/target:/target \
google/cloud-sdk \
  /usr/lib/google-cloud-sdk/bin/java_dev_appserver.sh \
  --address=0.0.0.0 \
  --port=9999 \
  ./target/hellofreddie-0.1

В состоянии свернуть конечную точку:

curl \
--silent \
--location \
--write-out "%{http_code}" \
--output /dev/null \
localhost:9999

возвращает 200

И запуск ваших сценариев с настройкой PORT=9999 возвращает:

Port is open after 2 seconds.

HTH!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...