在 Cypress 中运行 Docker 容器的问题

Posted

技术标签:

【中文标题】在 Cypress 中运行 Docker 容器的问题【英文标题】:problems running Docker container in Cypress 【发布时间】:2021-07-14 15:09:50 【问题描述】:

docker 容器“将构建”,但由于某种原因“不会运行”。我正在尝试解决这个问题,但我认为我需要重新审视它。

代码如下:

Docker 文件:

FROM cypress/included:6.8.0
WORKDIR /app
COPY . /app
RUN npm install
RUN $(npm bin)/ cypress  verify
RUN $(npm bin)/cypress 

docker 忽略文件

node_modules

docker-compose.yml 文件

version: '3'
services: 
    e2e:
        image: cypress
        build: .
        container_name: cypress
        command: 
            npx cypress run

我在终端中收到以下错误消息

docker-compose -f docker-compose.yml up
Building e2e
[+] Building 293.8s (9/10)                                                                       
 => [internal] load build definition from Dockerfile                                        0.1s
 => => transferring dockerfile: 36B                                                         0.0s
 => [internal] load .dockerignore                                                           0.0s
 => => transferring context: 34B                                                            0.0s
 => [internal] load metadata for docker.io/cypress/included:6.8.0                           0.0s
 => [1/6] FROM docker.io/cypress/included:6.8.0                                             0.0s
 => [internal] load build context                                                           0.0s
 => => transferring context: 1.14kB                                                         0.0s
 => CACHED [2/6] WORKDIR /app                                                               0.0s
 => [3/6] COPY . /app                                                                       0.1s
 => [4/6] RUN npm install                                                                 292.0s
 => ERROR [5/6] RUN $(npm bin)/ cypress  verify                                             1.4s
------                                                                                           
 > [5/6] RUN $(npm bin)/ cypress  verify:                                                        
#9 1.387 /bin/sh: 1: /app/node_modules/.bin/: Permission denied                                  
------                                                                                           
executor failed running [/bin/sh -c $(npm bin)/ cypress  verify]: exit code: 126                 
ERROR: Service 'e2e' failed to build
xxx-MacBook-Air CypressDocker % 

@mosaad。我刚试过你的答案。但是我收到以下错误消息

  => ERROR [5/6] RUN $(npm bin)/ cypress  verify                                             1.8s
------                                                                                           
 > [5/6] RUN $(npm bin)/ cypress  verify:
#9 1.705 /bin/sh: 1: /app/node_modules/.bin/: not found
------
executor failed running [/bin/sh -c $(npm bin)/ cypress  verify]: exit code: 127
ERROR: Service 'e2e' failed to build

【问题讨论】:

【参考方案1】:

您应该在 npm install 之后复制,以便也复制 node_modules。

这应该可行:

FROM cypress/included:6.8.0
WORKDIR /app
RUN npm install
COPY . /app
RUN $(npm bin)/ cypress verify
RUN $(npm bin)/cypress 

【讨论】:

您好,我尝试更新代码并收到错误消息。这是我原来问题的最后一个条目。 @fypnlp 尝试删除node_module 并再次运行所有内容【参考方案2】:

非常感谢所有花点时间查看我的问题的人。我再次重写了 docker-compose.yml 文件代码,它现在可以完美运行了。如果这可以帮助将来的任何人,这里是更正的代码。

FROM cypress/included:6.8.0
WORKDIR /app
COPY . /app
RUN npm install
RUN $(npm bin)/cypress verify
RUN $(npm bin)/cypress

【讨论】:

以上是关于在 Cypress 中运行 Docker 容器的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何对接 NX cypress e2e 应用程序

如何在容器中运行docker命令

如何在容器中运行docker命令

如何将运行在 Docker 容器中的 Flyway 连接到运行在 Docker 容器中的数据库?

在 Windows 的 Docker 容器中运行测试容器

为啥不需要在 Docker 容器中运行 sshd