【问题标题】:How to add cypress into my current docker?如何将柏树添加到我当前的 docker 中?
【发布时间】:2018-03-05 05:03:45
【问题描述】:

我有一个 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 文件夹。

安装cypress后,我运行

/node_module/.bin/cypress open

我看不到柏树打开。

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

【问题讨论】:

标签: docker vue.js docker-compose cypress


【解决方案1】:

如果您使用 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 的综合教程:

【讨论】:

    【解决方案2】:

    使用类似设置遇到类似问题

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

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

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

    dockerfile 是 Cypress 的预构建 docker-container

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

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

    【讨论】:

    • 这意味着我必须为我的 docker-compose 添加一个新服务并添加一个 cypress Dockerfile?
    • @ken 这是我无法弄清楚的部分,如果您按照我的方式使用本地 cypress 安装,则不需要与 docker 相关的任何内容(因为 cypress 可以独立于您的应用程序)。它更像是一个修补程序,因此您现在可以开始编写测试文件等。然而,这似乎并不理想,因为 cypress 应该能够作为 docker 的一部分运行和自动化。我相信我缺少一些配置来让 cypress 从 docker 正常工作。希望其他人可以提供帮助!
    • 我知道什么时候安装本地机器。它运行良好,但我想为我的 docker 安装它。无论如何谢谢你:)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 2021-01-27
      • 2018-09-08
      • 1970-01-01
      • 2019-07-24
      • 2021-04-21
      相关资源
      最近更新 更多