我不能 运行 我的 reactjs 应用程序的 docker 容器

I can't run a docker container of my reactjs app

我是 Docker 的新手,我尝试 运行 一个 create-react-app 图像的容器,所以这些是我完成的步骤:

  1. npx create-react-app frontend

  2. 我创建了一个 Dockerfile.dev,如下所示:

    FROM node:alpine
    WORKDIR '/app'
    COPY package.json .
    RUN npm install
    COPY . . 
    CMD ["npm" , "run" , "start"]
    
  3. 我使用这个命令构建镜像:

    docker build -f Dockerfile.dev .
    
  4. 当我 运行 容器使用提供的图像 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