Node.js Docker中的节点:npm测试和退出

Node.js Docker中的节点:npm测试和退出,node.js,docker,testing,npm,Node.js,Docker,Testing,Npm,我想在运行容器时使用“npm run test”作为命令覆盖来测试我的节点docker映像 我的Dockerfile是: FROM node:alpine WORKDIR /app COPY ./package.json ./ RUN npm install COPY ./ ./ CMD ["npm", "run", "start"] “npm run test”命令应在我的容器中运行,并退出到终端(本地和Travis CI),但测试运行被卡在“运行所有测试套件”。等待输入 我的docker运

我想在运行容器时使用“npm run test”作为命令覆盖来测试我的节点docker映像

我的Dockerfile是:

FROM node:alpine
WORKDIR /app
COPY ./package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "run", "start"]
“npm run test”命令应在我的容器中运行,并退出到终端(本地和Travis CI),但测试运行被卡在“运行所有测试套件”。等待输入

我的docker运行命令是:

docker run myimage npm run test -- --coverage
我还尝试了:

docker run myimage npm run test -- --forceExit
但是,当测试运行时(本地或Travis CI中),它们都不存在

我的App.test.js文件是标准测试:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<App />, div);
  ReactDOM.unmountComponentAtNode(div);
});
从“React”导入React;
从“react dom”导入react dom;
从“./App”导入应用程序;
它('渲染而不崩溃',()=>{
const div=document.createElement('div');
ReactDOM.render(,div);
ReactDOM.unmountComponentAtNode(div);
});

完成测试后,我应该如何自动退出测试?

发现docker run命令应该包含-e CI=true以立即退出:

docker run -e CI=true myimage npm run test
从关于“CI=true”的React文档中:

test命令将强制测试在CI模式下运行,测试将 只运行一次,而不是启动观察程序


我在特拉维斯管理CI,现在它对我有效

sudo: required
services:
    -docker
before_install:
    - docker build -t sambhaba/dockerdevandprod -f Dockerfile.dev .  
script:
    - docker run -e CI=true sambhaba/dockerdevandprod npm run test -- --coverage

我需要将
ENV CI=true
添加到我的Dockerfile中:

ENV CI=true
RUN npm run test
RUN npm run build
尝试
ENTRYPOINT[“npm”,“run”]
然后使用
CMD[“start”]
启动容器时,只要使用
docker run myimage test--coverage
启动容器,即可覆盖CMD,并查看是否有任何变化
CMD
指定要传递到
ENTRYPOINT
的默认参数。我认为容器的入口点可能错误,需要重写。