iPhone не может взаимодействовать с докеризованным сервером на локальном хосте

#ios #react-native #docker #docker-compose #metro-bundler

Вопрос:

У меня есть docker-compose.yml , который запускает сервер

 version: '3.3'
services:
  backend:
    image: ***
    ports:
      - '8080:80'
    environment:
      BASE_URL: http://localhost:8080
      DB_URL: jdbc:postgresql://db/project
      WEB_BASE_URL: http://localhost:3000
    restart: always
  db:
    ***
    restart: always
 

Теперь я хочу, чтобы приложение React native, запущенное на iPhone через xCode, связывалось с этим сервером

iPhone подключен через USB, Xcode запускает приложение на iPhone.

Но подобный звонок await axios.post<LoginResponse>('http://localhost:8080/v1/auth', loginData); сделать невозможно.

То, что я пробовал, не увенчалось успехом

в докере-составьте

 ports:
      - '0.0.0.0:8080:80'
with/without 
 BASE_URL: my.machine.ip.address:8080
 

И в приложении RN совершайте звонки (вместо localhost) на my.machine.ip.address:8080

Также в Mac system prefrences / sharing / internet sharing (НЕ помечено галочкой) -> > share your connection from Wi-Fi и iPhone USB опция Отмечена галочкой в блокчейне

Примечание: эта начальная настройка с вызовами localhost и без изменения порта в docker-compose отлично работает в Android (как в эмуляторе, так и на устройстве) и в симуляторе iOS. Проблема только в реальном устройстве iPhone

Комментарии:

1. Всякий раз, когда мне приходилось тестировать на реальном устройстве ios с локальным сервером, я использовал ngrok ( ngrok.com/docs ). Насколько я знаю, такое решение-единственное, которое работает