如果我使用create-react-app,是否需要react-scripts

时间:2019-06-21 19:33:54

标签: docker create-react-app nodemon

我想在docker中运行我的create-react-app。我创建了react-app。写下Dockerfile

FROM node:10.13.0

RUN mkdir /frontend

WORKDIR /frontend

RUN npm install -g nodemon

EXPOSE 9000

# CMD npm start - (1)
# CMD nodemon start - (2)
# CMD nodemon ./src/index.js - (3)

我不会安装node_modules,也不会将所有文件复制到映像中,因为我将使用卷进行此操作。然后创建一个dockerfile

version: '2'
services:
  frontend-dev:
    build:
      context: ./frontend
      dockerfile: Dockerfile.dev
    volumes:
      - ./frontend:/frontend
    ports:
      - "9000:9000"

好。现在,我在Dockerfile.dev中取消注释(1)(现在注释了最后三行)并运行

docker-compose -f dockerfile.dev.yml build
docker-compose -f dockerfile.dev.yml up

有一个错误“未找到反应脚本”。好。这是因为我没有运行npm install。我想在容器内执行npm install但是在发生此错误后,我的容器停止了,我无法执行此命令。好!我从一个人那里听说,我可以使用nodemon启动我的应用程序,并且如果出现错误-我的容器将不会停止。

好的。让我们评论(1),然后取消评论(2)。比跑

docker-compose -f dockerfile.dev.yml down
docker-compose -f dockerfile.dev.yml build
docker-compose -f dockerfile.dev.yml up

还有..同样的问题...容器已停止。好!我认为这是因为script在默认情况下会执行react-scripts start。可能是react-scripts个失败原因吗?让注释(2)和取消注释(3),运行`

docker-compose -f dockerfile.dev.yml down
docker-compose -f dockerfile.dev.yml build
docker-compose -f dockerfile.dev.yml up

有效吗?。不。容器尚未停止。因此,我可以运行

docker-compose -f docker-compose.dev.yml exec frontend-dev npm install
docker-compose -f docker-compose.dev.yml restart frontend-dev

但是它不起作用,因为我还有另一个错误:

frontend-dev_1  | /frontend/src/index.js:1
frontend-dev_1  | (function (exports, require, module, __filename, __dirname) { import React from 'react';
frontend-dev_1  |                                                                          ^^^^^
frontend-dev_1  | 
frontend-dev_1  | SyntaxError: Unexpected identifier
frontend-dev_1  |     at new Script (vm.js:79:7)
frontend-dev_1  |     at createScript (vm.js:251:10)
frontend-dev_1  |     at Object.runInThisContext (vm.js:303:10)
frontend-dev_1  |     at Module._compile     (internal/modules/cjs/loader.js:656:28)
frontend-dev_1  |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
frontend-dev_1  |     at Module.load (internal/modules/cjs/loader.js:598:32)
frontend-dev_1  |     at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
frontend-dev_1  |     at Function.Module._load (internal/modules/cjs/loader.js:529:3)
frontend-dev_1  |     at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
frontend-dev_1  |     at startup (internal/bootstrap/node.js:285:19)
frontend-dev_1  | [nodemon] app crashed - waiting for file changes before starting...

我不知道我该怎么做,我也不知道我需要什么。我需要这个“反应脚本”吗?他们是做什么的? react-script真的很重要吗?如何在docker上运行我的应用程序?也许(2)的方法是正确的,我只需要解决其他小问题?..请帮助我。

0 个答案:

没有答案