gpt4 book ai didi

docker - 带有 Expo dockerized 应用程序的 Metro bundler 无法正常工作

转载 作者:行者123 更新时间:2023-12-02 19:52:39 26 4
gpt4 key购买 nike

我正在尝试对 Expo React Native 应用程序进行 docker 化,以便我的团队合作伙伴中的任何人都可以下载 repo,然后制作 docker-compose up并且毫不费力地在他们的计算机上运行相同的博览会服务器。
到目前为止,我可以构建容器,并且它显示的信息与我在计算机上本地运行时显示的信息相同。

enter image description here

尝试启动 Metro 捆绑器时出现问题,网址为 http://localhost:19002无法访问。端口 19001 不会发生这种情况,它工作得很好。此外,我尝试用我的 iPhone 设备扫描 QR 码,但它也不起作用,因为我猜没有找到 docker ip。
我无法弄清楚我做错了什么,并且网络上没有太多关于 dockerize expo 的信息。

这些是我的 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

最佳答案

说得通。 Expo DevTools 告诉您它正在运行 localhost在你的容器中。

这意味着在您的容器中,Expo DevTools 仅对 localhost 可用。 .而这又只能从容器本身中获得。没有端口暴露会帮助你。您需要以允许外部访问的方式设置端口绑定(bind)。例如通过容器的 IP,以允许暴露语句工作。

简而言之,添加 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你应该没事。

关于docker - 带有 Expo dockerized 应用程序的 Metro bundler 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59638451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com