React App как Django App в контейнере Docker - отказ в подключении при попытке доступа к API на localhost:8000 urls
надеюсь, вы можете подсказать мне что-нибудь по этому поводу.
Сейчас у меня есть приложение React, которое является частью приложения Django (для удобства передачи токенов входа auth), которое теперь контейнеризировано в одном Dockerfile. Все работает как положено при локальном запуске в качестве экземпляра Docker, но с Docker Image возникают проблемы, несмотря на то, что веб-страницы видны при развертывании Image на сервере.
В частности, при обращении к образу Docker главная страница отображается, как и ожидалось, но затем ряд запросов на выборку, которые обычно идут к localhost:8000/<path>/<to>/<url>
, возвращают следующую ошибку:
GET http://localhost:8000/<path>/<to>/<url> net::ERR_CONNECTION_REFUSED
По предложению коллеги я попробовал изменить localhost:8000 на публичный IP-адрес сервера, на котором размещен Docker Image (например, 172.XX.XX.XXX:8000), но когда я перестраиваю приложение React, эти изменения не сохраняются, и оно по умолчанию возвращается на localhost. Вот мои вопросы:
Можно ли это изменить в самом приложении React? Нужно ли мне вручную назначить IP-адрес? (Это кажется мне маловероятным)
Или это связано либо с настройками порта Django, либо с самим Dockerfile?
Вот Dockerfile
FROM ubuntu:18.04
# ...
RUN apt-get update && apt-get install -y \
software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update && apt-get install -y \
python3.7 \
python3-pip
RUN python3.7 -m pip install pip
RUN apt-get update && apt-get install -y \
python3-distutils \
python3-setuptools
RUN python3.7 -m pip install pip --upgrade pip
# ???
ENV PYTHONUNBUFFERD 1
# copy file form local machine to container
COPY ./requirement.txt /requirement.txt
# install dependency
# RUN pip install -r /requirement.txt
RUN pip install -r /requirement.txt
# create app folder in container
RUN mkdir /app
# set default working dictionary
WORKDIR /app
# copy local app folder to container folder
COPY ./app /app
CMD ["python", "test.py"]
Множество технологий, множество точек отказа - заранее спасибо!