【问题标题】:Docker container exiting immediately after starting when using npm init react-app使用 npm init react-app 时,Docker 容器在启动后立即退出
【发布时间】:2020-03-21 16:38:36
【问题描述】:

我正在尝试使用 react 项目启动 Docker 容器,该项目是使用 npm init react-app 创建的。

这是我的 docker 文件

# Specify a base image
FROM node:alpine

WORKDIR /usr/app

# Install some depenendencies
COPY ./package.json ./
RUN npm install
COPY ./ ./

# Default command
CMD ["npm", "run", "start"]

Docker build . 成功创建图像(带有很多 npm 警告),然后当我运行 Docker run <image> 这是我终端中的输出

> mytest@0.1.0 start /usr/app
> react-scripts start

ℹ 「wds」: Project is running at http://172.17.0.2/
ℹ 「wds」: webpack output is served from 
ℹ 「wds」: Content not from webpack is served from /usr/app/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...

一旦它到达Starting the development server...,它就会停止在我的终端中运行。如果我检查Docker ps,我可以看到没有容器正在运行,如果我运行Docker ps -a,我可以看到一个容器已启动然后立即退出。

Docker logs 显示上面的终端输出,有人遇到这种情况吗?仅在我的 npm init react-app 项目中,我的其他 nodejs + express 项目使用完全相同的 docker 文件运行良好

【问题讨论】:

  • 您能分享您的docker run 命令的详细信息吗?你在使用-d 标志吗?
  • 要构建docker build .,它会成功构建,然后我正在运行docker run <image>。它适用于我的其他项目,但不适用于使用 npm init react-app 创建的项目。我在 2 个不同的 react-app 存储库中尝试了它,一个被弹出,一个正常,都不起作用。在我的 nodejs + express api 项目中尝试过,效果很好
  • 容器一旦主进程存在就会退出。尝试运行docker run -it --rm -v $(pwd):/usr/app -w /usr/app node:alpine,然后在提示符下尝试npm install,然后是npm start run(注意:这可能会弄乱你的源目录,所以可能先备份你的项目)。通过这种方式,您可能会获得一些有用的见解。然后,尝试相同的操作,但也可以在图像名称之前的运行行中使用 -e SKIP_PREFLIGHT_CHECK=true
  • 在你的 Dockerfile 中使用 EXPOSE 3000 然后尝试构建

标签: reactjs docker create-react-app


【解决方案1】:

我尝试降级,但没有成功。对我有用的是我添加的 react 应用程序扇区中的 docker-compose 文件:

stdin_open: true

这里也建议使用此解决方案:issue on github

【讨论】:

    【解决方案2】:

    docker run -it -p 80:3000 imagename 解决我的问题。

    【讨论】:

    • 基于问题,我认为这是正确的解决方案,因为问题没有提到 docker-compose。
    【解决方案3】:

    使用-it 运行命令对我有用:

    docker run -it -p 3001:3000 Imageid
    

    【讨论】:

      【解决方案4】:

      我解决了这个问题。在 package.json 中将 "react-scripts": "3.4.1" 替换为 "react-scripts": "3.4.0"

      然后重建图像,它的工作原理! 他们用 react-scripts 搞砸了一些东西”:“3.4.1” 只需使用 3.4.0 版

      【讨论】:

      • 这为我的一个旧包修复了它,但我会注意到4.0.0 及以后的问题已修复。
      【解决方案5】:

      所以设置没有问题,结果证明这是一个未解决的问题。

      https://github.com/facebook/create-react-app/issues/8688

      降级到 3.4 暂时解决

      【讨论】:

        【解决方案6】:

        遇到了同样的问题。 -it 标志解决了问题。

        docker run -it -p 3001:3001 <image-id>
        

        【讨论】:

        【解决方案7】:

        我遇到了和你一样的问题,只是运行了上面的命令来修复它:

        sudo docker run -it -p 3001:3000 Image-Name

        希望对你有帮助

        【讨论】:

          【解决方案8】:

          您也可以将以下内容与 -itd 标志一起使用。

          sudo docker run -itd -p 3001:3000 Image-Name
          

          【讨论】:

            【解决方案9】:

            使用此ans. on stackoverflow 和github 中提到的建议,添加

            ENV CI=trueCMD ["npm", "run", "start"] 之前的 Dockerfile,工作正常。

            我不确定为什么会这样。它可能与this 点有关。您可以在反应 docs 中阅读有关 env CI=true 的更多信息。

            【讨论】:

              猜你喜欢
              • 2018-05-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多