docker - 带有 Expo dockerized 应用程序的 Metro 捆绑器无法正常工作
问题描述
我正在尝试对 Expo React Native 应用程序进行 docker 化,以便我的团队合作伙伴中的任何人都可以下载 repo,然后制作一个docker-compose up
并且毫不费力地在他们的计算机上运行相同的 expo 服务器。
到目前为止,我可以构建容器,并且它显示的信息与我在计算机上本地运行时显示的信息相同。
尝试启动 Metro 捆绑器时出现问题,http://localhost:19002
无法访问 url。端口 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
. 而这又只能从容器本身中获得。没有端口暴露会帮助你。您需要以允许外部访问的方式设置端口绑定。例如,通过容器的 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
,你应该没问题。
推荐阅读
- javascript - 在 Spring Boot 中从 JavaScript 更改图像源
- python-3.x - n个列表的Python3列表理解
- reactjs - public 和 source 文件夹不在 create-react-app 中
- php - 如何获取json输出的内容
- c++ - 不允许 C++ 文件系统 create_directory_symlink 操作
- javascript - swiper.js SVG 相互堆叠
- flutter - 为什么我的颤振应用程序的用户信息页面在我重新启动应用程序时会丢失存储的数据?(仅供参考,数据存储在 Firebase 中,但不在应用程序中)
- mathjax - MathJax 元素属性在启动时指定,但仍适用于所有内容
- javascript - 导航栏 a 在某些滚动后更改颜色
- facebook-graph-api - 如何将图像添加到 Facebook 帖子而不在提要中获得两次图像?