docker - nodejs - selenium-webdriver - 错误:服务器提前终止,状态为 127

docker - nodejs - selenium-webdriver - 错误:服务器提前终止,状态为 127

我是 docker 容器的新手。我正在尝试创建一个包含 npm、node js、chromedriver 和 selenium-chromedriver 的 docker 文件并运行我的 javascript 文件。在我的本地,我在无头 chrome 浏览器中运行该脚本。

这是我的docker文件。

FROM ubuntu:20.04

USER root

WORKDIR /home/app

RUN apt-get update
  
RUN apt-get install git --yes

# Install Google Chrome
RUN apt-get install wget
RUN apt-get install ./google-chrome*.deb --yes
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P /usr/bin/ && \ dpkg --unpack google-chrome-stable_current_amd64.deb && \ apt-get install -f -y,

#FROM node:14.18.0
FROM node:17.2.0
USER root
ENV NODE_ENV=production
WORKDIR /LoadTesting
COPY ["/LoadTesting/package.json", "."]
RUN npm install
RUN npm ci
RUN npm install nodejs
RUN npm install mocha -g
RUN npm install chromedriver -g --unsafe-perm
RUN npm install selenium-webdriver


COPY /LoadTesting .
COPY /LoadTesting/test .
CMD ["node", "./test/script.js"]

以下是我的 docker compose 文件

version: '3.7'

services:
  k6:
    image: "loadimpact/k6:0.32.0"
    volumes:
      - "./loadtesting:/scripts"
  nodejs:
    build:
      context: ./
      dockerfile: k6-nodejs-dockerfile
    volumes:
      - '.loadtesting:/loadtesting'

volumes:
  grafana-storage:
  prometheus-data:
    external: true

然后我使用以下命令

docker compose build //no error
docker compose up k6 nodejs

然后我收到以下错误。

| /LoadTesting/node_modules/selenium-webdriver/remote/index.js:248
-nodejs-1  |                 reject(Error(e.message))
-nodejs-1  |                        ^
-nodejs-1  |
-nodejs-1  | Error: Server terminated early with status 127
-nodejs-1  |     at /LoadTesting/node_modules/selenium-webdriver/remote/index.js:248:24
-nodejs-1  |     at processTicksAndRejections (node:internal/process/task_queues:96:5)

在我的本地 Windows 环境中,它运行正常。据我所知,我正在安装 chrome、chrome 驱动程序和 selenium-webdriver。

缺什么?

答案1

您不能FROM这样使用两行。第二FROM行之前的所有内容在此之后将不可用,它将启动一个新图像。

引自FROM文档

每条FROM指令都会清除先前指令创建的所有状态。

您可以将文件从上一个阶段复制到第二个阶段,如多阶段构建文档

FROM golang:1.16 AS builder
# do your stuff
FROM alpine:latest
COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
# do more stuff

替代方案:节点映像基于 Debian 映像。您应该能够直接在该映像中安装所需的内容。

答案2

相关内容