You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket Pipelines构建Playwright Docker镜像遇权限拒绝问题

解决Bitbucket Pipelines中Playwright构建时/proc/tty/driver权限拒绝问题

针对你遇到的在Bitbucket Pipelines构建Docker镜像时,访问/proc/tty/driver出现权限拒绝的问题,以下是几个可行的解决方向:

1. 使用Playwright镜像内置的非root用户执行测试

Playwright官方镜像mcr.microsoft.com/playwright:v1.20.0-focal默认包含了pwuser非root用户,切换到该用户执行测试可以规避root权限下的系统目录访问限制。修改Dockerfile最后两步:

RUN yarn add playwright && \
    PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install && \
    yarn add @playwright/test
# 切换到pwuser用户
USER pwuser
RUN PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers ./node_modules/playwright/node_modules/.bin/playwright test

2. 调整Docker构建的安全选项

Bitbucket Pipelines的Docker-in-Docker环境可能通过seccomp限制了容器对某些系统目录的访问,在构建镜像时添加--security-opt seccomp=unconfined参数可以解除该限制。在bitbucket-pipelines.yml的构建步骤中修改:

script:
  - docker build --security-opt seccomp=unconfined -t your-image-name .

3. 将测试从构建阶段移至容器运行阶段

更合理的CI/CD流程是将镜像构建与测试执行分离,避免在Dockerfile的RUN指令中运行测试。这样可以避开构建阶段的权限限制:

修改后的Dockerfile

FROM mcr.microsoft.com/playwright:v1.20.0-focal
ADD ./sometest.e2e.spec.js /
RUN yarn add playwright && \
    PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers npx playwright install && \
    yarn add @playwright/test
# 移除构建阶段的测试命令

修改后的Bitbucket Pipelines步骤

script:
  - docker build -t your-image-name .
  - docker run --rm your-image-name sh -c "PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers ./node_modules/playwright/node_modules/.bin/playwright test"

4. 检查自托管Runner权限(若使用)

如果你使用的是Bitbucket自托管Runner,确认Runner的运行用户拥有足够权限,或者在Runner配置中开启对Docker容器的特权访问(添加--privileged参数到Runner的Docker启动命令)。

内容的提问来源于stack exchange,提问作者buzon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:31:16