Eu sou um novato em um contêiner docker. Estou tentando criar um arquivo docker que tenha npm, node js, chromedriver e selenium-chromedriver e execute meu arquivo javascript. No meu local , executo o script no navegador chrome sem periféricos.
Aqui está o meu arquivo 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"]
a seguir está meu arquivo de composição do docker
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
Então eu uso os seguintes comandos
docker compose build //no error
docker compose up k6 nodejs
Então eu recebo o seguinte erro.
| /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)
No meu ambiente Windows local, está funcionando corretamente. Até onde eu sei, estou instalando chrome, chrome driver e selenium-webdriver.
O que está faltando?
Você não pode usar duas
FROM
linhas assim. Tudo antes da segundaFROM
linha não estará disponível depois disso, iniciará uma nova imagem.Citação da
FROM
documentação :Você pode copiar arquivos do estágio anterior para o segundo, conforme descrito na documentação de compilação de vários estágios :
Alternativa: A imagem do nó é baseada em uma imagem debian. Você deve poder instalar o que precisa diretamente nessa imagem.