如何在Docker交互式运行Cypress时添加环境变量URL
解决方案
你可以通过以下几种方式在Docker环境中传递Cypress需要的baseUrl:
方法1:在Docker命令中添加环境变量
直接在docker run命令里用-e参数添加BASE_URL(Cypress会自动识别这个环境变量),修改后的完整命令如下:
docker run -it --rm \ --network host \ -v ~/.Xauthority:/root/.Xauthority:ro \ -e DISPLAY \ -e BASE_URL=https://ABC:1234 \ -v $PWD:/e2e \ -w /e2e \ --entrypoint '' \ cypress/included \ npx cypress open
Cypress会自动读取BASE_URL作为测试的目标地址。
方法2:在cypress open命令后添加--env参数
如果你更习惯用--env传递参数,可以直接在npx cypress open后追加参数,命令如下:
docker run -it --rm \ --network host \ -v ~/.Xauthority:/root/.Xauthority:ro \ -e DISPLAY \ -v $PWD:/e2e \ -w /e2e \ --entrypoint '' \ cypress/included \ npx cypress open --env baseUrl=https://ABC:1234
这种方式和你在非Docker环境中的用法完全一致,直接通过Cypress命令行参数传递目标URL。
方法3:通过Cypress配置文件指定
如果项目中有cypress.config.js,可以在配置文件中直接设置baseUrl,或者读取环境变量:
// cypress.config.js const { defineConfig } = require('cypress') module.exports = defineConfig({ e2e: { baseUrl: process.env.BASE_URL || 'https://default-url.com' } })
之后在Docker命令中通过-e BASE_URL=https://ABC:1234传递环境变量即可,Cypress会自动加载配置文件中的设置。
注意:因为你使用了--network host,容器会共享主机的网络栈,只要主机能访问https://ABC:1234,容器就能正常访问该地址。
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

