docker - Cypress 无法在 Docker 容器中运行

标签 docker docker-compose cypress

我有一个在 Docker 容器中运行的 Web 应用程序。根据我的理解,使用“cypress/base”镜像应该提供必要的依赖项。但是,尝试从附加的 shell 启动 Cypress 测试(使用 headless 运行)会产生以下输出:

Unhandled rejection Error: Your system is missing the dependency: Xvfb

Install Xvfb and run Cypress again.

Read our documentation on dependencies for more information:

https://on.cypress.io/required-dependencies

If you are using Docker, we provide containers with all required dependencies installed.

----------

Error: spawn Xvfb ENOENT

----------

Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
    at /app/node_modules/cypress/lib/errors.js:328:17
    at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
    at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17) 
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)

手动安装 Xvfb 无法解决问题;它只会导致另一个错误,指出无法解析 Cypress 的依赖项。

Dockerfile:

FROM node:16

RUN mkdir /app

WORKDIR /app
COPY package.json .
COPY yarn.lock .
RUN yarn
RUN npx browserslist@latest --update-db
COPY . .


CMD ["yarn", "start"]

docker-compose.yml:

version: "3"

services:
  ponder:
    image: cypress/base:16
    container_name: myApplication
    build: ./
    volumes:
      - ./src:/app/src
      - ./public:/app/public
      - ./package.json:/app/package.json
      - /app/node_modules
    ports:
      - 3001:3000
    stdin_open: true

想法?

编辑:

Xvfb 是通过运行 apt-get updateapt-get install xvfb 手动安装的。此后尝试运行 Cypress,给出:

Unhandled rejection Error: Cypress failed to start.

This may be due to a missing library or dependency. https://on.cypress.io/required-dependencies

Please refer to the error below for more details.

----------

/root/.cache/Cypress/8.5.0/Cypress/Cypress: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

----------

Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
    at /app/node_modules/cypress/lib/errors.js:328:17
    at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
    at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
    at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)

最佳答案

您需要安装依赖项。 https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies

apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb

关于docker - Cypress 无法在 Docker 容器中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70451400/

相关文章:

docker-compose down --rmi 所有容器共享镜像

docker - 如何以root用户身份运行docker-compose Docker Cloud

npm - 为什么 cypress 模块在运行 sorry-cypress run 命令时没有检测到?

Docker-compose 卷不复制任何文件

php - xdebug 连接拒绝 Docker 容器

由于 M1 芯片上的 Qemu 错误,Docker/Cypress 容器失败

javascript - 使用 cy.exec() 更改 Cypress 中的目录

linux - 如何释放 docker devmapper 和 CentOS7 上的空间?

docker - docker-compose,如何共享音量

docker - 我在为我的 nuxtjs 应用程序构建 docker 时遇到问题,热重载不起作用