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

Podman构建Playwright Docker镜像时遇Permission Denied错误的解决

解决Playwright容器构建时的"Permission denied"错误

问题背景

在Windows 11上使用Podman构建Playwright测试容器时,执行RUN npx playwright install或RUN npx playwright install --with-deps步骤时,触发sh: 1: playwright: Permission denied错误,导致镜像构建失败。使用的Dockerfile如下:

FROM mcr.microsoft.com/playwright:v1.51.0-noble

ARG ARG_CI 
ARG ARG_USER_NAME='TestUser'
ARG ARG_PASSWORD='ABC123'
ARG ARG_BASE_URL='https://www.google.de'

ENV CI=ARG_CI 
ENV ENV_USER_NAME=$ARG_USER_NAME
ENV ENV_PASSWORD=$ARG_PASSWORD
ENV ENV_BASE_URL=$ARG_BASE_URL

# copy project (including tests)
COPY . /e2e

WORKDIR /e2e

# Install dependencies
RUN npm install
# Install browsers
RUN npx playwright install

# Run playwright test
CMD USER_NAME=$ENV_USER_NAME PASSWORD=$ENV_PASSWORD BASE_URL=$ENV_BASE_URL npx playwright test --project=chromium || echo 'Test execution done...' && exit 0 

错误核心日志:

STEP 13/14: RUN npx playwright install
sh: 1: playwright: Permission denied
Error:building at STEP "RUN npx playwright install": while running runtime: exit status 127

解决方案

1. 修正目录权限问题

Playwright官方镜像默认使用非root用户pwuser,但你复制项目到/e2e目录后,该目录的所有者是root,导致pwuser没有执行权限。在Dockerfile中添加权限修改步骤:

# copy project (including tests)
COPY . /e2e
# 将目录所有权转移给pwuser
RUN chown -R pwuser:pwuser /e2e

WORKDIR /e2e

2. 切换到pwuser执行命令

官方镜像已经为pwuser配置好了Playwright的运行环境,切换到该用户后执行npm和Playwright相关命令:

# 切换到官方默认的非root用户
USER pwuser

# Install dependencies
RUN npm install
# Install browsers
RUN npx playwright install

3. 优化环境变量赋值

你当前的ENV CI=ARG_CI会把CI设置成字符串"ARG_CI",而非构建参数的实际值,修正为:

ENV CI=${ARG_CI}

4. 可选:跳过重复浏览器安装

官方Playwright镜像已经预装了所有所需浏览器,除非你需要特定版本,否则可以直接删除RUN npx playwright install步骤,减少构建时间。

修改后的完整Dockerfile

FROM mcr.microsoft.com/playwright:v1.51.0-noble

ARG ARG_CI 
ARG ARG_USER_NAME='TestUser'
ARG ARG_PASSWORD='ABC123'
ARG ARG_BASE_URL='https://www.google.de'

# 正确传递构建参数到环境变量
ENV CI=${ARG_CI}
ENV ENV_USER_NAME=$ARG_USER_NAME
ENV ENV_PASSWORD=$ARG_PASSWORD
ENV ENV_BASE_URL=$ARG_BASE_URL

# copy project (including tests)
COPY . /e2e
# 将目录权限交给pwuser
RUN chown -R pwuser:pwuser /e2e

WORKDIR /e2e

# 切换到官方镜像默认的非root用户
USER pwuser

# Install dependencies
RUN npm install
# 若无需重新安装浏览器,可删除此步骤
RUN npx playwright install

# Run playwright test
CMD USER_NAME=$ENV_USER_NAME PASSWORD=$ENV_PASSWORD BASE_URL=$ENV_BASE_URL npx playwright test --project=chromium || echo 'Test execution done...' && exit 0 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:24:55