From faece24118ae89a78543a679dc599c05dfeebe1f Mon Sep 17 00:00:00 2001 From: Raine Revere Date: Sat, 27 Apr 2024 23:41:11 +0000 Subject: [PATCH] Containerize puppeteer. --- .dockerignore | 4 ++++ Dockerfile | 23 +++++++++++++++++++++++ package.json | 2 ++ 3 files changed, 29 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..bc06bb04f09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.git +node_modules +build +docs \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..9839c493a3b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:20 + +# Install Google Chrome Stable and fonts +# Note: this installs the necessary libs to make the browser work with Puppeteer. +RUN apt-get update && apt-get install gnupg wget -y && \ + wget --quiet --output-document=- https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg && \ + sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \ + apt-get update && \ + apt-get install google-chrome-stable -y --no-install-recommends && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY . . + +ENV CI=1 +ENV NODE_ENV=development + +RUN yarn install +RUN yarn build +RUN servebuild 1>/dev/null & + +CMD yarn test:puppeteer \ No newline at end of file diff --git a/package.json b/package.json index 876704b3958..e859a742660 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "deploy:staging": "npm run lint && npm run build && firebase hosting:channel:deploy staging --expires 30d", "deploy:staging2": "npm run lint && npm run build && firebase hosting:channel:deploy staging2 --expires 30d", "deploy:dev": "npm run lint && npm run build && firebase hosting:channel:deploy dev --expires 30d", + "docker:build": "docker build --platform linux/amd64 --rm -t em-snapshot .", + "docker:run": "docker run em-snapshot", "lint": "FORCE_COLOR=1 npm-run-all --parallel --aggregate-output lint:*", "lint:src": "FORCE_COLOR=1 eslint . --cache --rule 'no-console: [2, { allow: [error, info, warn] }]'", "lint:lockfile": "npx lockfile-lint",