4

我有一个 docker-compose.yml 文件:

version: '2'

services:
  web:
    build: .
    command: npm run dev
    volumes:
      - .:/usr/app
      - /usr/app/node_modules
    ports:
      - "8080:8080"
    expose:
      - "8080"

还有一个 Dockerfile

FROM node:7.7.2-alpine

WORKDIR /usr/app

COPY package.json .

RUN npm install --quiet

COPY . .

现在我想通过运行添加 cypress ( https://www.cypress.io/ ) 来运行测试:

npm install --save-dev cypress

但也许它不起作用,因为我看不到 cypress 文件夹。

安装柏树后,我运行

/node_module/.bin/cypress open

我看不到柏树打开。

所以现在我不知道如何将 cypress 添加到我的 docker 以通过 cypress 在我的主机上运行测试。

4

3 回答 3

4

如果您使用的是 docker-compose,更简洁的解决方案是使用单独的专用赛普拉斯 Docker 容器,这样您docker-compose.yml就变成了:

version: '2'
services:
  web:
    build: .
    entrypoint: npm run dev
    volumes:
      - .:/usr/app
      - /usr/app/node_modules
    ports:
      - "8080:8080"
  cypress:
    image: "cypress/included:3.2.0"
    depends_on:
      - web
    environment:
      - CYPRESS_baseUrl=http://web:8080
    working_dir: /e2e
    volumes:
      - ./:/e2e

e2e目录应包含您的cypress.json文件和您的integration/spec.js文件。您的package.json文件根本不必包含 Cypress,因为它已被烘焙到 Cypress Docker 映像 ( cypress/included) 中。

有关更多详细信息,我写了一篇关于将 Docker Compose 与 Cypress 结合使用的综合教程:

于 2019-05-03T19:32:59.183 回答
3

遇到类似设置的类似问题

我暂时修复它的方法是手动进入包含我的node_modules文件夹并运行的文件夹node_modules/.bin/install,从那里你应该可以使用node_modules/.bin/open或打开它$(npm bin)/cypress open

尝试在我的 docker-compose 上设置一个单独的柏树容器

cypress:
    build:
        context: .
        dockerfile: docker/cypress
    depends_on:
        - node
    volumes:
        - .:/code

dockerfile 是赛普拉斯的预建 docker-container

能够开始docker-compose exec cypress node_modules/.bin/cypress verify工作,但是当我尝试打开赛普拉斯时,它只是挂起。

希望这对 OP 有所帮助,但希望有人能提供更具体的答案,帮助我们通过 docker 完全运行 Cypress

于 2018-03-05T16:20:20.333 回答
0

您还可以在 docker hub 上使用现有的 cypress 映像并在 docker compose 中构建它。Personnaly 我避免直接​​在 compose 中添加它,我为 cypress 创建了一个单独的 docker 文件。

于 2021-01-23T17:50:13.043 回答