我是 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
这有帮助吗?
apt-get install default-jre
或更新的 Ubuntu 版本