Предоставьте оба порта 8080 и 3000 для развертывания в облачном режиме - PullRequest
1 голос
/ 22 апреля 2020

TL: DR - Я пытаюсь развернуть мое приложение стека MERN в GCP Cloud Run. Борьба с тем, что я считаю проблемой порта.

Мое приложение React находится в папке client внутри моего приложения Node.js.

Вот мой Dockerfile для запуска как внешнего, так и внутреннего интерфейса:

FROM node:13.12.0-alpine
WORKDIR /app
COPY . ./

# Installing components for be connector
RUN npm install --silent  
WORKDIR /app/client
RUN npm install --silent

WORKDIR /app
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT [ "/app/entrypoint.sh" ]

... а вот мой entrypoint.sh файл:

#!/bin/sh
node /app/index.js &
cd /app/client
npm start

docker-compose up работает локально, а docker run -p 8080:8080 -p 3000:3000 <image_id> запускает созданный мной образ. Порт 8080 предназначен для узла и порт 3000 для приложения React. Однако в Cloud Run приложение не работает. Когда я захожу в приложение, развернутое в Cloud Run, веб-интерфейс сначала загружается за доли секунды, но затем происходит сбой приложения, когда оно пытается выполнить запросы к API.

enter image description here In Дополнительные настройки , есть порт контейнера, который по умолчанию равен 8080. Я пытался изменить это на 3000, но ни один не работает. Я не могу ввести 8080,3000, поскольку поле принимает действительные целые числа только для порта. Можно ли одновременно развернуть React + Node в Cloud Run? Как я могу прослушать Cloud Run на 8080 и 3000, а не на 1 из 2?

Спасибо!

1 Ответ

2 голосов
/ 22 апреля 2020

В настоящее время это невозможно.

Вместо этого вы можете запускать несколько процессов внутри Cloud Run , но вместо этого использовать nginx для прокси-запросов между ними в зависимости от URL, аналогично тому, что рекомендуется в этот ответ .

...