当前位置: 首页 > 知识库问答 >
问题:

Dockerise后无法在浏览器中打开React应用程序

方昊
2023-03-14

我正在尝试dockerise一个反应应用程序。我正在使用以下Dockerfile来实现这一点。

# base image
FROM node:9.4

# set working directory
WORKDIR /usr/src/app

# install and cache app dependencies
COPY package*.json ./
ADD package.json /usr/src/app/package.json
RUN npm install

# Bundle app source
COPY . .

# Specify port
EXPOSE 8081

# start app
CMD ["npm", "start"]

还有,在我的包裹里。json开始脚本被定义“scripts”:{“开始”:“webpack dev server--mode development--open”,…}

我的形象是:

docker build . -t myimage

我终于运行了图像,因为

docker run IMAGE_ID

这个命令然后运行图像,但是当我转到localhost:8080或localhost:8081时,我什么也看不到。

然而,当我进入myimage的docker容器,并执行curl-X GET http:localhost:8080时,我就可以访问我的react应用程序了。

我还将其部署在google kubernetes上,并在其上公开了一个负载平衡器服务。然而,同样的事情发生了,我无法访问暴露endpoint上的react应用程序,但当我登录到容器并发出curl请求时,我正在获取索引。html。

那么,如何运行docker映像的映像,以便通过浏览器访问应用程序呢。


共有1个答案

公羊英达
2023-03-14

当您在Dockerfile中使用EXPOSE时,它只是简单地声明服务正在侦听指定的端口(在您的案例中为8081),但它实际上并不创建任何端口转发。

要实际将流量从主机转发到服务,必须使用-p标志指定端口映射

例如:docker run-d-p 80:8080 myimage将启动一个容器,并将请求转发到localhost:80到容器端口8080

更多关于曝光在这里https://docs.docker.com/engine/reference/builder/#expose

使现代化

因此,通常当您在本地开发节点应用程序并运行webpack dev server时,它会在127.0.0.1上侦听,这很好,因为您打算从托管的同一台机器上访问该站点。但由于在docker中,容器可以被视为一个单独的实例,这意味着您需要能够从“外部”世界访问它,这意味着有必要重新配置dev服务器,以便在0.0.0.0上侦听(这基本上意味着分配给“实例”的所有IP地址)

因此,通过更新开发服务器配置来监听0.0.0.0您应该能够从主机访问您的应用程序。链接到留档:https://webpack.js.org/configuration/dev-server/#devserverhost

 类似资料:
  • 问题内容: 我在Ubuntu Desktop 16.04上使用Selenium WebDriver,但无法打开浏览器。Firefox更新后出现以下错误(在此之前,所有方法都可以正常工作): 问题答案: 修正 :目前的解决方案是降级Firefox!运行此命令以获取可用Firefox版本的列表。 我的结果: 安装: 要保留此版本并禁止更新:

  • 我在Ubuntu桌面16.04上使用Selenium WebDriver,无法打开浏览器。在Firefox更新之后,我出现了以下错误(在此之前,一切都正常):

  • 每当我尝试时,它都会说Chrome意外关闭并要求重新打开。在python末尾,它给出了错误: 我的代码是: 更新:在详细模式下运行会产生以下结果:

  • 我已经通过命令行java-jar Jenkins.war启动了Jenkins服务器。但是,当我尝试执行Jenkins参数化作业(maven测试)时,firefox会打开片刻,然后立即关闭。 如果我使用chrome浏览器,它在Jenkins的工作很好。 注意:同样的测试在火狐和chrome浏览器上执行得很好。

  • 全局基类 登录名 } 问题是,当运行此功能时,我得到了下面的错误,我不明白为什么会发生这种情况,因为它在错误的位置上没有给我任何帮助。 未定义步骤:给定I打开Chrome 未定义步骤:浏览网站时 未定义的步骤:然后我使用“user1”和“password1”登录网站