正在Docker容器中运行React应用程序未正确运行

正在Docker容器中运行React应用程序未正确运行,docker,create-react-app,Docker,Create React App,我有一个小的React应用程序,我想在Docker容器中运行。我已按如下方式填写了以下Dockerfile: # base image FROM node:9.6.1 # set working directory RUN mkdir /app WORKDIR /app ENV PATH /app/node_modules/.bin:$PATH # install and cache app dependencies COPY package-lock.json /app/package-

我有一个小的React应用程序,我想在Docker容器中运行。我已按如下方式填写了以下Dockerfile:

# base image
FROM node:9.6.1

# set working directory
RUN mkdir /app
WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package-lock.json /app/package-lock.json
COPY package.json /app/package.json

COPY . /app

RUN npm install

# start app
CMD ["npm", "start"]
在完成构建之后,我能够正确地(我认为)创建一个图像

>docker image list
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
notes                latest              e4ccada07b84        18 hours ago        846MB
但是,当我在映像上运行时,它确实会运行
npm start
,但不会在我指定的端口中运行,如果我转到它提供的URL,它将无法连接到任何东西

>docker run -p 3030:3030  notes:latest

You can now view notes in the browser.

  Local:            http://localhost:3000/
  On Your Network:  http://172.17.0.4:3000/

Note that the development build is not optimized.
To create a production build, use npm run build.

要在容器中正确运行,我缺少什么?

您的React应用程序设置为在容器的端口3000上运行,因为您提到要在输出中访问URL;我假设您正在尝试访问主机的端口3000

将命令更改为以下命令:;将主机的端口3000连接到容器的端口3000

docker container run -p 3000:3000 notes:latest
然后前往-除非您正在使用Docker工具箱,否则您将希望使用

我还建议在
Dockerfile
中添加一个
EXPOSE 3000
,因为这是一个很好的做法


请注意,
-p
标志使用
作为格式。

您的React应用程序设置为在容器的端口3000上运行,因为您在输出中提到了要访问URL;我假设您正在尝试访问主机的端口3000

将命令更改为以下命令:;将主机的端口3000连接到容器的端口3000

docker container run -p 3000:3000 notes:latest
然后前往-除非您正在使用Docker工具箱,否则您将希望使用

我还建议在
Dockerfile
中添加一个
EXPOSE 3000
,因为这是一个很好的做法


只需一个注释-
-p
标志使用
作为格式。

尝试将命令更改为
docker run-p 3030:3000注释:最新的
@Yuankun不幸的是,这会给出与上述相同的结果。尝试将命令更改为
docker run-p 3030:3000注释:最新的
@Yuankun不幸的是,这与上面给出的结果相同。这似乎有效!
docker run
命令是否与
docker container run
命令相同?是-
docker container run
docker run
命令完全相同;但是随着Docker的成长,新的命令也被添加,Docker决定将其添加到一个子命令下,这样命令列表就不会那么长了。这似乎奏效了!
docker run
命令是否与
docker container run
命令相同?是-
docker container run
docker run
命令完全相同;但是随着Docker的发展,新的命令被添加,Docker决定将它也添加到一个子命令下,这样命令列表就不会那么长了。