docker 服务器提前终止,状态为 127



我的Windows 10机器上有一个工作示例。当我通过使用 node:8 的容器将其移植到 linux 时,我收到错误 127。

我对 Linux 或基本要求不够熟悉,即它是否需要 Java 安装或其他?

包.json

{
"name": "test1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"webdriver-update": "webdriver-manager update",
"webdriver-update-chrome": "webdriver-manager update --versions.chrome=78.0.3904.105",
"test-protractor": "protractor protractor.conf.js --disableChecks"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"cucumber": "^6.0.5",
"jasmine-spec-reporter": "^4.2.1",
"protractor": "^5.4.2",
"protractor-cucumber-framework": "^6.2.0",
"rimraf": "^3.0.1"
}
}

量角器会议

const protractor = require('protractor');
// console.log('browser = ', browser);
exports.config = {
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
getPageTimeout: 60000,
allScriptsTimeout: 500000,
specs: ['features/*.feature'],
baseURL: 'http://www.google.com/',
cucumberOpts: {
require: [
'./features/step_definitions/stepDefinitions.js'
],
tags: false,
profile: false,
'no-source': true
},
onPrepare: function() {
browser.ignoreSynchronization = true;
browser.manage().window().maximize();
browser.manage().timeouts().implicitlyWait(5000);
},
capabilities: {
browserName: "chrome",
acceptInsecureCerts: true,
chromeOptions: {
args: [
'--allow-insecure-localhost',
'--headless',
'--disaple-gpu',
'--window-size=1920,1080',
'--no-sandbox',
'--disable-dev-shm-usage'
],
prefs: {
download: {
prompt_for_download: false,
extensions_to_open: ''
},
profile: {
default_content_settings: {
popups: 0
}
},
directory_upgrade: true
},
useAutomationExtension: false
}
},
// connec direct to webdriver, instead of local selenium server!
directConnect: true,
ignoreUncaughtException: true,
onComplete: () => {
// Reporter.createHtmlReport();
}
}

Dockerfile

FROM node:8

# Create and define the node_modules's cache directory.
RUN mkdir /usr/src/cache
WORKDIR /usr/src/cache
COPY . .
RUN npm install
# run update to get all drivers
RUN npm run webdriver-update
## update to specific chrome version - 78.0.3904.105
RUN npm run webdriver-update-chrome
# overwrite any remaining references to wrong chromedriver...
RUN sed -i -e 's/chromedriver[^"]*/chromedriver_78.0.3904.105/g' node_modules/protractor/node_modules/webdriver-manager/selenium/update-config.json
# run tests
RUN npm run test-protractor

上面的 sed 命令很简单,确保 update-config.json 使用的是上面选择的 chrome 版本。

update-config.json

例如:

"node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_78.0.3904.105.exe"

错误:

服务器提前终止,状态为 127

下面的全栈错误:

---> Running in f001e88bdac0
Removing intermediate container f001e88bdac0
---> 7016f93ad697
Step 9/13 : RUN sed -i -e 's/chromedriver[^"]*/chromedriver_78.0.3904.105/g' node_modules/protractor/node_modules/webdriver-manager/selenium/update-config.json
---> Running in 85e4466ff4d5
Removing intermediate container 85e4466ff4d5
---> 385d8dca6be9
Step 10/13 : RUN npm run test-protractor
---> Running in 8304e6de67c9
> test1@1.0.0 test-protractor /usr/src/cache
> protractor protractor.conf.js --disableChecks
[22:53:19] I/launcher - Running 1 instances of WebDriver
[22:53:19] I/direct - Using ChromeDriver directly...
[22:53:19] E/launcher - Server terminated early with status 127
[22:53:19] E/launcher - Error: Server terminated early with status 127
at earlyTermination.catch.e (/usr/src/cache/node_modules/selenium-webdriver/remote/index.js:252:52)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
From: Task: WebDriver.createSession()
at Function.createSession (/usr/src/cache/node_modules/selenium-webdriver/lib/webdriver.js:769:24)
at Function.createSession (/usr/src/cache/node_modules/selenium-webdriver/chrome.js:761:15)
at Direct.getNewDriver (/usr/src/cache/node_modules/protractor/built/driverProviders/direct.js:77:33)
at Runner.createBrowser (/usr/src/cache/node_modules/protractor/built/runner.js:195:43)
at q.then.then (/usr/src/cache/node_modules/protractor/built/runner.js:339:29)
at _fulfilled (/usr/src/cache/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/usr/src/cache/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/usr/src/cache/node_modules/q/q.js:796:13)
at /usr/src/cache/node_modules/q/q.js:556:49
at runSingle (/usr/src/cache/node_modules/q/q.js:137:13)
[22:53:19] E/launcher - Process exited with error code 199

如果我删除对特定 chrome 版本的引用,然后只运行 webdriver-manager update,如下所示:

码头工人文件

FROM node:8

# Create and define the node_modules's cache directory.
RUN mkdir /usr/src/cache
WORKDIR /usr/src/cache
COPY . .
RUN npm install
# run update to get all drivers
RUN npm run webdriver-update
# run tests
RUN npm run test-protractor

这是我的错误

> webdriver-manager update
[05:14:17] I/file_manager - creating folder /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/standalone-response.xml https://selenium-release.storage.googleapis.com/
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chrome-response.xml https://chromedriver.storage.googleapis.com/
[05:14:17] I/config_source - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases
[05:14:18] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
[05:14:18] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16.zip https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip
[05:14:21] I/downloader - curl -o/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
[05:14:23] I/update - chromedriver: unzipping chromedriver_80.0.3987.16.zip
[05:14:23] I/update - chromedriver: setting permissions to 0755 for /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16 [05:14:29] I/update - geckodriver: unzipping geckodriver-v0.26.0.tar.gz
[05:14:29] I/update - geckodriver: setting permissions to 0755 for /usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0
Removing intermediate container 7a4b12efa5b4
---> 8d02b754b748
Step 7/9 : RUN npm run test-protractor
---> Running in fe8c7c731d48
> test1@1.0.0 test-protractor /usr/src/cache
> protractor protractor.conf.js --disableChecks
[05:14:31] I/launcher - Running 1 instances of WebDriver
[05:14:31] I/direct - Using ChromeDriver directly...
[05:14:31] W/launcher - Ignoring uncaught error Error: Server terminated early with status 127
[05:14:32] E/launcher - BUG: launcher exited with 1 tasks remaining
npm ERR! code ELIFECYCLE
npm ERR! errno 100
npm ERR! test1@1.0.0 test-protractor: `protractor protractor.conf.js --disableChecks`
npm ERR! Exit status 100
npm ERR!
npm ERR! Failed at the test1@1.0.0 test-protractor script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-02-07T05_14_32_065Z-debug.log
The command '/bin/sh -c npm run test-protractor' returned a non-zero code: 100

量角器会议

我注意到我的配置中有一个错误,并更正了"忽略未捕获异常",末尾的 s =

exports.config = {
...
ignoreUncaughtExceptions: true,

虽然它不能解决问题。我仍然遇到同样的问题。

update-config.json

{
"chrome": {
"last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16",
"all": [
"/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_80.0.3987.16"
]
},
"standalone": {
"last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar",
"all": [
"/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar"
]
},
"gecko": {
"last": "/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0",
"all": [
"/usr/src/cache/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0"
]
}
}

最新更新