Как правильно включить команду npm run test в Docker Run? - PullRequest
0 голосов
/ 20 февраля 2019

Я уверен, что раньше запускал эту команду, но я протестировал следующую команду в своем терминале и получил эту ошибку:

✗ docker run aa1112d76852 npm run test -- --coverage
ERRO[0001] error waiting for container: context canceled
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown.

Я обеспокоен, потому что это команда, за исключением контейнераидентификатор, который я буду размещать в моем .travis.yml файле.Где ошибка в том, как я собрал это на этот раз?

Это моя Dockerfile конфигурация:

FROM node:alpine as builder 
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
RUN npm run build


FROM nginx
COPY --from=builder /app/build /usr/share/nginx/html

Это мой docker-compose.yml файл:

version: "3"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - /app/node_modules
      - .:/app

1 Ответ

0 голосов
/ 20 февраля 2019

Так что это работало ранее, потому что я собирал его из Dockerfile.dev, у которого есть последняя важная команда:

FROM node:alpine

 WORKDIR '/app'

 COPY package.json .
 RUN npm install

 COPY . .

 CMD ["npm", "run", "start"]

В то время как новый контейнер, который я использовал, был построен из Dockerfile, который имеет этоконфигурация:

FROM node:alpine as builder 
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
RUN npm run build


FROM nginx
COPY --from=builder /app/build /usr/share/nginx/html

Обратите внимание на отсутствующие CMD ["npm", "run", "start"].

Таким образом, команда должна работать в моем файле .travis.yml, потому что я создаю его с моим Dockerfile.dev следующим образом:

before_install:
  - docker build -t danale/docker-react -f Dockerfile.dev .
...