Docker
docker - nodejs - selenium-webdriver - 錯誤:伺服器提前終止,狀態為 127
我是碼頭集裝箱的新手。我正在嘗試創建一個包含 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 映像。您應該能夠直接在該映像中安裝所需的內容。