mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	This seems to be common practise, as per [here](https://github.com/search?q=org%3Amicrosoft%20%2FENV%20LANG%3DC.UTF-8%2F&type=code). Fixes https://github.com/microsoft/playwright/issues/30245 Fixes https://github.com/microsoft/playwright/issues/28642
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
FROM ubuntu:jammy
 | 
						|
 | 
						|
ARG DEBIAN_FRONTEND=noninteractive
 | 
						|
ARG TZ=America/Los_Angeles
 | 
						|
ARG DOCKER_IMAGE_NAME_TEMPLATE="mcr.microsoft.com/playwright:v%version%-jammy"
 | 
						|
 | 
						|
ENV LANG=C.UTF-8
 | 
						|
ENV LC_ALL=C.UTF-8
 | 
						|
 | 
						|
# === INSTALL Node.js ===
 | 
						|
 | 
						|
RUN apt-get update && \
 | 
						|
    # Install Node.js
 | 
						|
    apt-get install -y curl wget gpg ca-certificates && \
 | 
						|
    mkdir -p /etc/apt/keyrings && \
 | 
						|
    curl -sL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
 | 
						|
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >> /etc/apt/sources.list.d/nodesource.list && \
 | 
						|
    apt-get update && \
 | 
						|
    apt-get install -y nodejs && \
 | 
						|
    # Feature-parity with node.js base images.
 | 
						|
    apt-get install -y --no-install-recommends git openssh-client && \
 | 
						|
    npm install -g yarn && \
 | 
						|
    # clean apt cache
 | 
						|
    rm -rf /var/lib/apt/lists/* && \
 | 
						|
    # Create the pwuser
 | 
						|
    adduser pwuser
 | 
						|
 | 
						|
# === BAKE BROWSERS INTO IMAGE ===
 | 
						|
 | 
						|
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
 | 
						|
 | 
						|
# 1. Add tip-of-tree Playwright package to install its browsers.
 | 
						|
#    The package should be built beforehand from tip-of-tree Playwright.
 | 
						|
COPY ./playwright-core.tar.gz /tmp/playwright-core.tar.gz
 | 
						|
 | 
						|
# 2. Bake in browsers & deps.
 | 
						|
#    Browsers will be downloaded in `/ms-playwright`.
 | 
						|
#    Note: make sure to set 777 to the registry so that any user can access
 | 
						|
#    registry.
 | 
						|
RUN mkdir /ms-playwright && \
 | 
						|
    mkdir /ms-playwright-agent && \
 | 
						|
    cd /ms-playwright-agent && npm init -y && \
 | 
						|
    npm i /tmp/playwright-core.tar.gz && \
 | 
						|
    npm exec --no -- playwright-core mark-docker-image "${DOCKER_IMAGE_NAME_TEMPLATE}" && \
 | 
						|
    npm exec --no -- playwright-core install --with-deps && rm -rf /var/lib/apt/lists/* && \
 | 
						|
    # Workaround for https://github.com/microsoft/playwright/issues/27313
 | 
						|
    # While the gstreamer plugin load process can be in-process, it ended up throwing
 | 
						|
    # an error that it can't have libsoup2 and libsoup3 in the same process because
 | 
						|
    # libgstwebrtc is linked against libsoup2. So we just remove the plugin.
 | 
						|
    if [ "$(uname -m)" = "aarch64" ]; then \
 | 
						|
        rm /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstwebrtc.so; \
 | 
						|
    else \
 | 
						|
        rm /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstwebrtc.so; \
 | 
						|
    fi && \
 | 
						|
    rm /tmp/playwright-core.tar.gz && \
 | 
						|
    rm -rf /ms-playwright-agent && \
 | 
						|
    rm -rf ~/.npm/ && \
 | 
						|
    chmod -R 777 /ms-playwright
 |