Metro bundler с приложением Expo dockerized не работает - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь докеризировать приложение Expo React Native, чтобы любой из моих партнеров по команде мог загрузить репозиторий, а затем сделать docker-compose up и без труда запустить на своих компьютерах тот же самый выставочный сервер.
Насколько я могу сделать контейнер, и он показывает ту же информацию, которая появляется, когда я запускаю его локально на моем компьютере.

enter image description here

Проблема возникает при попытке запустить metro bundler, URL http://localhost:19002 недоступен. Этого не происходит с портом 19001, который работает отлично. Кроме того, я попытался отсканировать QR-код с моим устройством iPhone, но он также не работает, потому что не находит docker ip, я думаю.

Я не могу понять, что я делаю неправильно, и в Интернете не так много информации о выставке dockerize.

Это мой dockerfile и docker -compose.yml

FROM node:latest

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY package*.json /usr/src/app/
COPY app.json /usr/src/app/

RUN npm install -g expo-cli

EXPOSE 19000
EXPOSE 19001
EXPOSE 19002

CMD npm i -f && npm start
version: '3.7' # Specify docker-compose version

# Define the services/containers to be run
services:
   expo: # Name of the frontend service
      container_name: expo-prestadores
      build: ./ # Specify the directory of the Dockerfile
      ports:
         - 19000:19000 # Specify port-forwarding
         - 19001:19001
         - 19002:19002
      volumes: # Mount host path in the container
         - ./:/usr/src/app
         - /usr/src/app/node_modules

1 Ответ

0 голосов
/ 08 января 2020

Имеет смысл. Expo DevTools сообщает вам, что он работает на localhost в вашем контейнере.

Это означает, что в вашем контейнере Expo DevTools доступны только для localhost. Который, в свою очередь, доступен только из самого контейнера. Никакая экспозиция порта не поможет вам там. Вам необходимо установить привязку вашего порта таким образом, чтобы разрешить внешний доступ. например, через IP-адрес контейнера, чтобы позволить оператору expose работать.

Вкратце, добавьте переменную окружения EXPO_DEVTOOLS_LISTEN_ADDRESS=0.0.0.0, например,

version: '3.7' # Specify docker-compose version
services:
   expo: # Name of the frontend service
      container_name: expo-prestadores
      build: ./ # Specify the directory of the Dockerfile
      ports:
         - 19000:19000 # Specify port-forwarding
         - 19001:19001
         - 19002:19002
      volumes: # Mount host path in the container
         - ./:/usr/src/app
         - /usr/src/app/node_modules
      environment:
         - EXPO_DEVTOOLS_LISTEN_ADDRESS=0.0.0.0 

, к своим docker-compose.yml и с тобой все будет в порядке.

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