我不能 运行 我的 reactjs 应用程序的 docker 容器
I can't run a docker container of my reactjs app
我是 Docker 的新手,我尝试 运行 一个 create-react-app
图像的容器,所以这些是我完成的步骤:
npx create-react-app frontend
我创建了一个 Dockerfile.dev
,如下所示:
FROM node:alpine
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm" , "run" , "start"]
我使用这个命令构建镜像:
docker build -f Dockerfile.dev .
当我 运行 容器使用提供的图像 id:
docker run -p 3000:3000 my_docker_image_id
没有任何反应,as seen in this screenshot。
但是当我将 -i
参数添加到我的命令时一切正常,as seen in this screenshot:
docker run -p 3000:3000 -i my_docker_image_id
有什么想法吗?
-i
标志启用交互模式,将输出连接到您的终端。您是否尝试在没有 -i
标志的情况下访问该站点?它应该为您的页面提供服务,但只是不向您的控制台显示输出。
更新:
因此,根据您找到的 GitHub issue,您还可以将 docker 运行 与 -it
标志一起使用。 -i
如上所述,但 -t
以类似于 docker-compose.yml
中的 stdin_open: true
行的方式启用 TTY
docker -it run -p 3000:3000 my_docker_image_id
添加 -d
标志来启用分离模式,并允许 Docker 到 运行 您的容器在后台。然后你可以 运行 docker logs {container_id}
查看服务器的输出。
Docker 文档中有一个 link:https://docs.docker.com/engine/reference/run/#detached-vs-foreground
When starting a Docker container, you must first decide if you want to
run the container in the background in a “detached” mode or in the
default foreground mode:
-d=false: Detached mode: Run container in the background, print new container id
react-scripts 3.4.1 版本有问题,
所以我添加了一个 docker-compose 文件,并指定了解决问题并节省时间的这一行:
stdin_open: true
所以我的 docker-compose.yml 文件看起来像这样:
version : '3'
services:
web:
build:
context: .
dockerfile: Dockerfile.dev
stdin_open: true
ports:
- "3000:3000"
volumes:
- /app/node_modules
- .:/app
我是 Docker 的新手,我尝试 运行 一个 create-react-app
图像的容器,所以这些是我完成的步骤:
npx create-react-app frontend
我创建了一个
Dockerfile.dev
,如下所示:FROM node:alpine WORKDIR '/app' COPY package.json . RUN npm install COPY . . CMD ["npm" , "run" , "start"]
我使用这个命令构建镜像:
docker build -f Dockerfile.dev .
当我 运行 容器使用提供的图像 id:
docker run -p 3000:3000 my_docker_image_id
没有任何反应,as seen in this screenshot。
但是当我将 -i
参数添加到我的命令时一切正常,as seen in this screenshot:
docker run -p 3000:3000 -i my_docker_image_id
有什么想法吗?
-i
标志启用交互模式,将输出连接到您的终端。您是否尝试在没有 -i
标志的情况下访问该站点?它应该为您的页面提供服务,但只是不向您的控制台显示输出。
更新:
因此,根据您找到的 GitHub issue,您还可以将 docker 运行 与 -it
标志一起使用。 -i
如上所述,但 -t
以类似于 docker-compose.yml
stdin_open: true
行的方式启用 TTY
docker -it run -p 3000:3000 my_docker_image_id
添加 -d
标志来启用分离模式,并允许 Docker 到 运行 您的容器在后台。然后你可以 运行 docker logs {container_id}
查看服务器的输出。
Docker 文档中有一个 link:https://docs.docker.com/engine/reference/run/#detached-vs-foreground
When starting a Docker container, you must first decide if you want to run the container in the background in a “detached” mode or in the default foreground mode:
-d=false: Detached mode: Run container in the background, print new container id
react-scripts 3.4.1 版本有问题,
所以我添加了一个 docker-compose 文件,并指定了解决问题并节省时间的这一行:
stdin_open: true
所以我的 docker-compose.yml 文件看起来像这样:
version : '3'
services:
web:
build:
context: .
dockerfile: Dockerfile.dev
stdin_open: true
ports:
- "3000:3000"
volumes:
- /app/node_modules
- .:/app