Docker

docker - nodejs - selenium-webdriver - 錯誤:伺服器提前終止,狀態為 127

  • December 3, 2021

我是碼頭集裝箱的新手。我正在嘗試創建一個包含 npm、node js、chromedriver 和 selenium-chromedriver 的 docker 文件並執行我的 javascript 文件。在我的本地,我在無頭 chrome 瀏覽器中執行腳本。

這是我的碼標頭檔。

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"]

以下是我的碼頭工人撰寫文件

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。

什麼不見了?

你不能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 映像。您應該能夠直接在該映像中安裝所需的內容。

引用自:https://serverfault.com/questions/1085307