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

Docker容器运行集成Playwright Java的Spring Boot应用依赖缺失问题

Playwright Java + Spring Boot Docker部署依赖缺失问题解决方案

问题核心原因

你之前的Dockerfile使用了多阶段构建,但多个独立的FROM指令会创建完全隔离的镜像层——前面Ubuntu层安装的依赖不会被后续的Maven镜像继承,这是导致依赖缺失的根本原因。此外,直接指定.so文件名安装是错误的,apt-get需要通过软件包名而非库文件名来安装。

解决方案

方案1:基于官方Playwright Java镜像构建(推荐)

官方Playwright Java镜像已经预装了所有浏览器依赖和Chromium等浏览器,无需额外配置,直接作为基础镜像使用即可:

# 使用官方Playwright Java镜像,自带完整依赖和浏览器
FROM mcr.microsoft.com/playwright/java:v1.30.0-focal

# 安装Maven(部分版本官方镜像未预装,按需添加)
RUN apt-get update && apt-get install -y maven \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 构建项目
RUN mkdir /project
COPY . /project
WORKDIR /project
RUN mvn clean package -DskipTests

# 启动Spring Boot应用
CMD ["java", "-jar", "target/controller-1.jar"]

方案2:基于Maven镜像手动安装依赖

若坚持使用Maven基础镜像,需在同一个镜像层内完整安装所有Playwright所需的系统依赖:

FROM maven:3.8.3-openjdk-17

# 更新源并安装所有缺失的系统依赖(使用软件包名而非.so文件名)
RUN apt-get update && apt-get install -y \
    libnss3 \
    libnssutil3 \
    libsmime3 \
    libnspr4 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libdbus-1-3 \
    libatspi2.0-0 \
    libx11-6 \
    libxcomposite1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxrandr2 \
    libgbm1 \
    libxcb1 \
    libxkbcommon0 \
    libpango-1.0-0 \
    libcairo2 \
    libasound2 \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 提前安装Chromium浏览器(可选,避免应用启动时自动下载耗时)
RUN npx playwright install chromium --with-deps

# 构建项目
RUN mkdir /project
COPY . /project
WORKDIR /project
RUN mvn clean package -DskipTests

# 启动应用
CMD ["java", "-jar", "target/controller-1.jar"]

关键注意事项

  • 避免无意义的多阶段构建:除非需要将构建产物复制到轻量运行镜像,否则不要使用多个独立FROM指令,这会导致前序层的配置完全丢失。
  • 依赖安装必须使用软件包名:apt-get无法识别.so文件名,必须使用对应的包名(例如libnss3而非libnss3.so)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:24:27