I have a Spring Boot application where I use Playwright Java in. I can get it to work when I running it locally on my Windows machine but when I try to run in a docker container I get the following error:
Host system is missing dependencies to run browsers. ║
2023-02-16 23:30:37 ║ Missing libraries: ║
2023-02-16 23:30:37 ║ libnss3.so ║
2023-02-16 23:30:37 ║ libnssutil3.so
I try to run:
RUN apt-get install -y libnss3.so \
libnssutil3.so \
libsmime3.so \
libnspr4.so \
libatk-1.0.so.0 \
but it only comes back with the same error. My Dockerfile looks like this:
FROM ubuntu:22.04
RUN apt-get install -y libnss3.so \
libnssutil3.so \
libsmime3.so \
libnspr4.so \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
FROM mcr.microsoft.com/playwright/java:v1.30.0-focal
FROM maven:3.8.3-openjdk-17
RUN mkdir /project
COPY . /project
WORKDIR /project
RUN mvn clean package -DskipTests
CMD ["java", "-jar", "target/controller-1.jar"]
I have alos tried this Dockerfile
FROM ubuntu:22.04
RUN apt-get update && playwright install-deps
FROM mcr.microsoft.com/playwright/java:v1.30.0-focal
FROM maven:3.8.3-openjdk-17
RUN mkdir /project
COPY . /project
WORKDIR /project
RUN mvn clean package -DskipTests
CMD ["java", "-jar", "target/controller-1.jar"]
with the same error.
Currently I just doing some test to see if I can get it to work so the class in the project where I use Playwright looks like this:
@Service
public class PlaywrightTest {
Playwright playwright;
public void testPlaywright() {
playwright = Playwright.create();
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(true));
BrowserContext context = browser.newContext();
Page page = context.newPage();
page.navigate("https://www.google.com/");
System.out.println(page.title());
}
}
When the application starts in docker it looks like this
2023-02-17 00:07:51 2023-02-16T23:07:51.131Z INFO 1 --- [ main] s.g.a.ControllerApplication : Started ControllerApplication in 2.693 seconds (process running for 3.142)
2023-02-17 00:07:52 BEWARE: your OS is not officially supported by Playwright; downloading fallback build.
2023-02-17 00:07:52 Downloading Chromium 110.0.5481.38 (playwright build v1045) from https://playwright.azureedge.net/builds/chromium/1045/chromium-linux.zip
.....downloading....
2023-02-17 00:08:35 Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-02-17 00:08:35 2023-02-16T23:08:35.032Z ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed
2023-02-17 00:08:35
2023-02-17 00:08:35 java.lang.IllegalStateException: Failed to execute ApplicationRunner
2023-02-17 00:08:35 at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:761) ~[spring-boot-3.0.2.jar!/:3.0.2]
2023-02-17 00:08:35 at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:748) ~[spring-boot-3.0.2.jar!/:3.0.2]
2023-02-17 00:08:35 at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-3.0.2.jar!/:3.0.2]
2023-02-17 00:08:35 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) ~[spring-boot-3.0.2.jar!/:3.0.2]
2023-02-17 00:08:35 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1291) ~[spring-boot-3.0.2.jar!/:3.0.2]
2023-02-17 00:08:35 at se.demo.controller.controllerApplication.main(controllerApplication.java:15) ~[classes!/:1]
2023-02-17 00:08:35 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
2023-02-17 00:08:35 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
2023-02-17 00:08:35 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
2023-02-17 00:08:35 at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
2023-02-17 00:08:35 at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[controller-1.jar:1]
2023-02-17 00:08:35 at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[controller-1.jar:1]
2023-02-17 00:08:35 at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[controller-1.jar:1]
2023-02-17 00:08:35 at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[controller-1.jar:1]
2023-02-17 00:08:35 Caused by: com.microsoft.playwright.PlaywrightException: Error {
2023-02-17 00:08:35 message='
2023-02-17 00:08:35 ╔══════════════════════════════════════════════════════╗
2023-02-17 00:08:35 ║ Host system is missing dependencies to run browsers. ║
2023-02-17 00:08:35 ║ Missing libraries: ║
2023-02-17 00:08:35 ║ libnss3.so ║
2023-02-17 00:08:35 ║ libnssutil3.so ║
2023-02-17 00:08:35 ║ libsmime3.so ║
2023-02-17 00:08:35 ║ libnspr4.so ║
2023-02-17 00:08:35 ║ libatk-1.0.so.0 ║
2023-02-17 00:08:35 ║ libatk-bridge-2.0.so.0 ║
2023-02-17 00:08:35 ║ libcups.so.2 ║
2023-02-17 00:08:35 ║ libdrm.so.2 ║
2023-02-17 00:08:35 ║ libdbus-1.so.3 ║
2023-02-17 00:08:35 ║ libatspi.so.0 ║
2023-02-17 00:08:35 ║ libX11.so.6 ║
2023-02-17 00:08:35 ║ libXcomposite.so.1 ║
2023-02-17 00:08:35 ║ libXdamage.so.1 ║
2023-02-17 00:08:35 ║ libXext.so.6 ║
2023-02-17 00:08:35 ║ libXfixes.so.3 ║
2023-02-17 00:08:35 ║ libXrandr.so.2 ║
2023-02-17 00:08:35 ║ libgbm.so.1 ║
2023-02-17 00:08:35 ║ libxcb.so.1 ║
2023-02-17 00:08:35 ║ libxkbcommon.so.0 ║
2023-02-17 00:08:35 ║ libpango-1.0.so.0 ║
2023-02-17 00:08:35 ║ libcairo.so.2 ║
2023-02-17 00:08:35 ║ libasound.so.2 ║
2023-02-17 00:08:35 ╚══════════════════════════════════════════════════════╝
2023-02-17 00:08:35 name='Error
2023-02-17 00:08:35 stack='Error: