我确定我之前已经运行过此命令,但是我在终端中测试了以下命令并收到此错误:
✗ 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.
我很担心,因为这是除容器ID之外的命令,它将被放置在我的.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
答案 0 :(得分:0)
所以这以前可行,因为我是从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 .
答案 1 :(得分:0)
就上下文而言,此问题与有关Udemy的“ Docker和Kubernetes:完整指南”课程有关,在Reddit等上对此进行了很好的推荐。
当您传递生产构建的映像ID(使用Dockerfile创建)而不是Dockerfile.dev的映像ID时,会发生此错误:
root@ubuntu-docker:/home/paul/frontend# docker run USERNAME/docker-react npm run test
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:345: starting container process caused "exec: \"npm\": executable
file not found in $PATH": unknown.
root@ubuntu-docker:/home/paul/frontend# docker run USERNAME/docker-react-dev npm run
test
> frontend@0.1.0 test /app
> react-scripts test
PASS src/App.test.js
✓ renders without crashing (92ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 3.794s
Ran all test suites.
我相信是因为Dockerfile.dev包含“ npm run start”行,该行启动开发服务器,然后允许其接收测试命令,而生产版本只是构建应用程序,然后使用nginx为其提供服务。我对React不太熟悉,无法真正了解它。
但是,如果其他任何人(例如OP和我)正在执行此课程并努力解决此错误,我希望这会有所帮助。