playwright/docs/docker/build.sh
Andrey Lushnikov 7d2078ef6f
devops: bake browsers into Docker image (#2990)
This patch bakes browsers into docker image.

Important observations:
- We now re-build docker image everytime we roll browsers.
- Docker image size almost doubles: from `225MB` to `496MB`.

References #2926
2020-07-17 16:51:39 -07:00

45 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
set -e
set +x
if [[ ($1 == '--help') || ($1 == '-h') ]]; then
echo "usage: $(basename $0) [--prepare-only]"
echo
echo "Build Playwright docker image and tag it as 'playwright:localbuild'."
echo "Once image is built, you can run it with"
echo ""
echo " docker run --rm -it playwright:localbuild /bin/bash"
echo ""
echo "NOTE: this requires on Playwright dependencies to be installed with 'npm install'"
echo " and Playwright itself being built with 'npm run build'"
echo
echo " --prepare-context prepare docker context and skip building."
echo " This is to defer building & publishing to Docker Github Action."
echo ""
exit 0
fi
PREPARE_CONTEXT_ONLY=""
if [[ $1 == "--prepare-context" ]]; then
PREPARE_CONTEXT_ONLY="1"
fi
function cleanup() {
if [[ -z "${PREPARE_CONTEXT_ONLY}" ]]; then
rm -f "playwright.tar.gz"
fi
}
trap "cleanup; cd $(pwd -P)" EXIT
cd "$(dirname "$0")"
# We rely on `./playwright.tar.gz` to download browsers into the docker
# image.
node ../../packages/build_package.js playwright ./playwright.tar.gz
if [[ -n "${PREPARE_CONTEXT_ONLY}" ]]; then
exit 0
fi
docker build -t "playwright:localbuild" -f Dockerfile.bionic .