我有一个React应用程序,它基于Facebook的创建React应用程序
。在开发过程中,我在特定的本地端口(60001)上运行它。为了实现这一点,我更改了包中脚本
部分的默认开始
脚本。将json添加到以下内容:
"start": "set PORT=60001 && react-scripts start",
我现在需要在使用相同端口的Docker容器中运行此操作。在我的Dockerfile中,我有这两个阶段:
FROM node:alpine as build
COPY ./package.json /app/package.json
WORKDIR /app
RUN npm install
RUN rm -f .npmrc
FROM build as build-dev
COPY ./public/ /app/public
COPY ./src/ /app/src
EXPOSE 60001
CMD ["npm", "start"]
请注意,我正在公开希望npm dev服务器绑定到的容器上的端口。
我按照您的预期构建映像,目标是上面的builddev
Docker阶段。
docker build --target build-dev -t my-app:local
然后像这样运行容器:
docker run -it -p 60001:60001 my-app:local
这样做的目的是在我期望我的开发应用程序构建正在运行时,将我的本地端口60001绑定到容器上的同一端口。
当我这样做时,我看到npm正在运行正确的脚本,并且应用程序已经编译。但是,浏览到http://localhost:60001/什么也没给我。只是一个被拒绝的错误连接,好像什么都没有。
我看不出我做错了什么。有什么想法吗?我希望我可能能够从容器日志中获得一些见解,但是当我为这个容器运行
docker日志
时,我只看到确认我的应用程序编译的反应脚本输出。
似乎应用程序与容器localhost绑定。
试着调试
docker exec -it <container_id> ash
#then
curl localhost:60001
它应该在本地主机上工作。
要从容器外部访问它,请执行以下操作。
# i think its window syantax
"start": "set PORT=60001 HOST=0.0.0.0 react-scripts start",
或
"start": "PORT=60001 HOST=0.0.0.0 react-scripts start",
主持人:
默认情况下,开发web服务器绑定到设备上的所有主机名(本地主机、LAN网络地址等)。可以使用此变量指定其他主机。
高级配置主机选项react应用程序
如果你正在使用docker compose添加这一行为我解决了问题。。。
一行是stdin_open: true
。
下面是我的docker-compose.yml
的一个基本示例:
version: "3.7"
services:
test-app:
stdin_open: true
container_name: test-app
build: .
ports:
- "3000:3000"
volumes:
- /app/node_modules
- .:/app
示例Dockerfile
供参考:
FROM node:alpine
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install
COPY . .
EXPOSE 3000
CMD ["yarn", "start"]
有关这方面的更多信息,我将查看github发行的createReact应用程序
GitHub问题
祝你好运这让我发疯好几个小时
PS不确定这将如何在生产构建中保持
我有一个react-app,它简单地显示hello-world消息,但我喜欢运行应用程序通过docker-container,但有这个问题。在此消息之后,进程停止,没有运行应用程序。 我不能理解我应该做什么,因为我有一个很小的应用程序,在Dockerfile中有基本代码 我需要安装webpack-dev-server吗,我尝试了,但得到了版本错误,如“手动添加服务器”的版本比已经安装的服务器低。所
问题内容: 。 基本思想是使用音频和ui(vlc,firefox,skype等)运行应用程序 我正在使用pulseaudio搜索docker容器,但是找到了所有在tcp上使用pulseaudio流传输的容器。(应用程序的安全沙箱) https://gist.github.com/hybris42/ce429de428e5af3a344a https://github.com/jlund/docke
在运行容器之后,我应该如何更改我的Dockerfile以使其具有一个正在运行的MySQL服务?
问题内容: 我无法在Docker容器中运行任何yum命令,而没有出现以下错误: 我很困惑,因为我非常确定docker容器是使用默认用户root运行的。不过,如果我尝试将sudo放在a 或command 前面,则会得到: 我正在使用以下基本映像,以便可以在Docker中轻松运行Java Wildfly应用程序:https ://hub.docker.com/r/jboss/wildfly/ 底层发行
Dockerfile文件 docker撰写。yml 我发射的命令是为了让这个起来 docker-compose-fdocker-compose.yml 之后我去了https://localhost:3000这个项目没有加载。这是可复制的回购协议https://github.com/reyanshmishra/My-Portfolio-ReactJS 谢啦
其基本思想是运行带有音频和ui的应用程序(vlc、firefox、skype…) 我在使用pulseaudio搜索docker容器,但我找到的所有容器都在TCP上使用pulseaudio流。(应用程序的安全沙箱) https://gist.github.com/hybris42/ce429de428e5af3a344a https://github.com/jlund/docker-chrome-