如何将柏树添加到我当前的 docker 中?

How to add cypress into my current docker?

我有一个 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 . .

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

npm install --save-dev cypress

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

安装cypress后,我运行

/node_module/.bin/cypress open

我看不到柏树开着。

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

运行 使用类似设置进入类似问题

我临时修复它的方法是手动进入包含我的 node_modules 文件夹和 运行ning 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

其中 docker 文件是 Cypress 的预构建文件 docker-container

能够使 docker-compose exec cypress node_modules/.bin/cypress verify 正常工作,但是当我尝试打开 Cypress 时它只是挂起。

希望这对 OP 有帮助,但希望有人可以提供更具体的答案,这将帮助我们 运行 赛普拉斯完全通过 docker

如果您正在使用 docker-compose,更简洁的解决方案是仅使用一个单独的专用 Cypress 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 with Cypress 的综合教程:

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