Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions utils/docker/Dockerfile.jammy
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ 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 && \
Expand All @@ -27,23 +26,21 @@ RUN apt-get update && \
adduser pwuser

# === BAKE BROWSERS INTO IMAGE ===
# Browsers are split into separate layers to enable parallel pulls.

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 && \
# 2. Set up playwright-core and install all system dependencies in one layer.
RUN install -d -m 777 /ms-playwright /ms-playwright/.links && \
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/* && \
npm exec --no -- playwright-core install-deps && \
# 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
Expand All @@ -53,7 +50,21 @@ RUN mkdir /ms-playwright && \
else \
rm /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstwebrtc.so; \
fi && \
rm -rf /var/lib/apt/lists/*

# 3. Install each browser binary in its own layer for parallel pulling.
# Note: installing chromium also installs chromium-headless-shell and ffmpeg.
RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install chromium && \
chmod -R 777 /ms-playwright/chromium-* /ms-playwright/chromium_headless_shell-* /ms-playwright/ffmpeg-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install firefox && \
chmod -R 777 /ms-playwright/firefox-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install webkit && \
rm /tmp/playwright-core.tar.gz && \
rm -rf /ms-playwright-agent && \
rm -rf ~/.npm/ && \
chmod -R 777 /ms-playwright
chmod -R 777 /ms-playwright/webkit-*
27 changes: 19 additions & 8 deletions utils/docker/Dockerfile.noble
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ ENV LC_ALL=C.UTF-8
# === INSTALL Node.js ===

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note we also have Dockerfile.resolute now.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated it


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 && \
Expand All @@ -27,24 +26,36 @@ RUN apt-get update && \
adduser pwuser

# === BAKE BROWSERS INTO IMAGE ===
# Browsers are split into separate layers to enable parallel pulls.

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 && \
# 2. Set up playwright-core and install all system dependencies in one layer.
RUN install -d -m 777 /ms-playwright /ms-playwright/.links && \
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/* && \
npm exec --no -- playwright-core install-deps && \
rm -rf /var/lib/apt/lists/*

# 3. Install each browser binary in its own layer for parallel pulling.
# Note: installing chromium also installs chromium-headless-shell and ffmpeg.
RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install chromium && \
chmod -R 777 /ms-playwright/chromium-* /ms-playwright/chromium_headless_shell-* /ms-playwright/ffmpeg-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install firefox && \
chmod -R 777 /ms-playwright/firefox-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install webkit && \
rm /tmp/playwright-core.tar.gz && \
rm -rf /ms-playwright-agent && \
rm -rf ~/.npm/ && \
chmod -R 777 /ms-playwright
chmod -R 777 /ms-playwright/webkit-*
26 changes: 19 additions & 7 deletions utils/docker/Dockerfile.resolute
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,36 @@ RUN apt-get update && \
adduser pwuser

# === BAKE BROWSERS INTO IMAGE ===
# Browsers are split into separate layers to enable parallel pulls.

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 && \
# 2. Set up playwright-core and install all system dependencies in one layer.
RUN install -d -m 777 /ms-playwright /ms-playwright/.links && \
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/* && \
npm exec --no -- playwright-core install-deps && \
rm -rf /var/lib/apt/lists/*

# 3. Install each browser binary in its own layer for parallel pulling.
# Note: installing chromium also installs chromium-headless-shell and ffmpeg.
RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install chromium && \
chmod -R 777 /ms-playwright/chromium-* /ms-playwright/chromium_headless_shell-* /ms-playwright/ffmpeg-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install firefox && \
chmod -R 777 /ms-playwright/firefox-*

RUN cd /ms-playwright-agent && \
npm exec --no -- playwright-core install webkit && \
rm /tmp/playwright-core.tar.gz && \
rm -rf /ms-playwright-agent && \
rm -rf ~/.npm/ && \
chmod -R 777 /ms-playwright
chmod -R 777 /ms-playwright/webkit-*