{"id":13393372,"url":"https://github.com/alekzonder/docker-puppeteer","last_synced_at":"2025-04-05T01:06:26.426Z","repository":{"id":41565964,"uuid":"100706510","full_name":"alekzonder/docker-puppeteer","owner":"alekzonder","description":"docker image with Google Puppeteer installed","archived":false,"fork":false,"pushed_at":"2021-10-20T06:08:42.000Z","size":23,"stargazers_count":484,"open_issues_count":23,"forks_count":138,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T00:08:34.557Z","etag":null,"topics":["docker","docker-image","google-puppeteer","puppeteer","screenshot"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/alekzonder/puppeteer/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alekzonder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-18T11:40:14.000Z","updated_at":"2025-02-11T21:33:31.000Z","dependencies_parsed_at":"2022-09-12T01:11:04.691Z","dependency_job_id":null,"html_url":"https://github.com/alekzonder/docker-puppeteer","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekzonder%2Fdocker-puppeteer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekzonder%2Fdocker-puppeteer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekzonder%2Fdocker-puppeteer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekzonder%2Fdocker-puppeteer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alekzonder","download_url":"https://codeload.github.com/alekzonder/docker-puppeteer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271528,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","google-puppeteer","puppeteer","screenshot"],"created_at":"2024-07-30T17:00:51.341Z","updated_at":"2025-04-05T01:06:26.407Z","avatar_url":"https://github.com/alekzonder.png","language":"JavaScript","funding_links":[],"categories":["Opensource projects","JavaScript","docker","包","Packages"],"sub_categories":["贡献"],"readme":"# puppeteer docker image\n\ndocker image with  [Google Puppeteer](https://github.com/GoogleChrome/puppeteer) installed\n\nand [screenshots scripts](#screenshots-tools)\n\n[![nodesource/node](http://dockeri.co/image/alekzonder/puppeteer)](https://hub.docker.com/r/alekzonder/puppeteer/)\n\n## docker tags\n\n- `latest`\n- `1`\n- `1.1.1`\n- `1.1.0`\n- `1.0.0`\n- `0`\n- `0.13.0`\n- `0.12.0`\n- `0.11.0`\n- `0.10.2`\n- `0.10.1`\n- `0.10.0`\n- `0.9.0`\n\n## install\n\n```\ndocker pull alekzonder/puppeteer:latest\n# OR\ndocker pull alekzonder/puppeteer:1.0.0\n# OR\ndocker pull alekzonder/puppeteer:1\n\n```\n\n## before usage\n\n\n1. you should pass `--no-sandbox, --disable-setuid-sandbox` args when launch browser\n\n```js\nconst puppeteer = require('puppeteer');\n\n(async() =\u003e {\n\n    const browser = await puppeteer.launch({\n        args: [\n            '--no-sandbox',\n            '--disable-setuid-sandbox'\n        ]\n    });\n\n    const page = await browser.newPage();\n\n    await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'});\n\n    browser.close();\n\n})();\n```\n\n2. if you got page crash with `BUS_ADRERR` ([chromium issue](https://bugs.chromium.org/p/chromium/issues/detail?id=571394)), increase shm-size on docker run with `--shm-size` argument\n\n```bash\ndocker run --shm-size 1G --rm -v \u003cpath_to_script\u003e:/app/index.js alekzonder/puppeteer:latest\n```\n\n3. If you're seeing random navigation errors (unreachable url) it's likely due to ipv6 being enabled in docker. Navigation errors are caused by ERR_NETWORK_CHANGED (-21) in chromium. Disable ipv6 in your container using `--sysctl net.ipv6.conf.all.disable_ipv6=1` to fix:\n```bash\ndocker run --shm-size 1G --sysctl net.ipv6.conf.all.disable_ipv6=1 --rm -v \u003cpath_to_script\u003e:/app/index.js alekzonder/puppeteer:latest\n```\n\n4. add `--enable-logging` for chrome debug logging http://www.chromium.org/for-testers/enable-logging\n\n```js\nconst puppeteer = require('puppeteer');\n\n(async() =\u003e {\n\n    const browser = await puppeteer.launch({args: [\n        '--no-sandbox',\n        '--disable-setuid-sandbox',\n\n        // debug logging\n        '--enable-logging', '--v=1'\n    ]});\n\n\n```\n\n\n## usage\n\n### mount your script to /app/index.js\n\n```bash\ndocker run --shm-size 1G --rm -v \u003cpath_to_script\u003e:/app/index.js alekzonder/puppeteer:latest\n```\n\n### custom script from dir\n\n```bash\ndocker run --shm-size 1G --rm \\\n -v \u003cpath_to_dir\u003e:/app \\\n alekzonder/puppeteer:latest \\\n node my_script.js\n```\n\n## screenshots tools\n\nsimple screenshot tools in image\n\n```bash\ndocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \\\n alekzonder/puppeteer:latest \\\n \u003cscreenshot,full_screenshot,screenshot_series,full_screenshot_series\u003e 'https://www.google.com' 1366x768\n```\n\n### screenshot tools syntax\n\n`\u003ctool\u003e \u003curl\u003e \u003cwidth\u003ex\u003cheight\u003e [\u003cdelay_in_ms\u003e]`\n\n* `delay_in_ms`: is optional (defaults to `0`)\n  * Waits for `delay_in_ms` milliseconds before taking the screenshot\n\n### `screenshot`\n\n```bash\ndocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \\\n alekzonder/puppeteer:latest \\\n screenshot 'https://www.google.com' 1366x768\n```\n\noutput: one line json\n\n```\n{\n    \"date\":\"2017-09-01T05:03:27.464Z\",\n    \"timestamp\":1504242207,\n    \"filename\":\"screenshot_1366_768.png\",\n    \"width\":1366,\n    \"height\":768\n}\n```\ngot screenshot in /tmp/screenshots/screenshot_1366_768.png\n\n### `full_screenshot`\n\nsave full screenshot of page\n\n```bash\ndocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \\\n alekzonder/puppeteer:latest \\\n full_screenshot 'https://www.google.com' 1366x768\n```\n\n### `screenshot_series`, `full_screenshot_series`\n\nadds datetime in ISO format into filename\n\nuseful for cron screenshots\n\n```bash\ndocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \\\n alekzonder/puppeteer:latest \\\n screenshot_series 'https://www.google.com' 1366x768\n```\n\n```bash\ndocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \\\n alekzonder/puppeteer:latest \\\n full_screenshot_series 'https://www.google.com' 1366x768\n```\n\n```\n2017-09-01T05:08:55.027Z_screenshot_1366_768.png\n# OR\n2017-09-01T05:08:55.027Z_full_screenshot_1366_768.png\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falekzonder%2Fdocker-puppeteer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falekzonder%2Fdocker-puppeteer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falekzonder%2Fdocker-puppeteer/lists"}