乐闻世界logo
搜索文章和话题

How to run google chrome headless in docker?

4 个月前提问
4 个月前修改
浏览次数60

1个答案

1

运行谷歌Chrome无头模式在Docker中是一个常见的需求,尤其是在进行自动化测试或网页抓取时。以下是如何在Docker中设置并运行无头Chrome的步骤:

1. 创建Dockerfile

首先,你需要创建一个Dockerfile来定义你的Docker镜像。这个Dockerfile将会包含安装Chrome和相应驱动的命令,还有一些必要的依赖。这里是一个简单的例子:

Dockerfile
# 使用官方的Node.js作为基础镜像 FROM node:12-slim # 设置工作目录 WORKDIR /app # 安装Chrome RUN apt-get update && apt-get install -y wget gnupg2 RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb RUN apt-get install -y ./google-chrome-stable_current_amd64.deb # 拷贝应用文件到容器内 COPY . /app # 安装应用依赖 RUN npm install # 启动应用 CMD ["node", "your-app.js"]

这个Dockerfile首先基于Node.js镜像,适用于需要Node.js环境的应用。它会下载并安装Chrome浏览器。确保你的应用的其余部分也被正确设置好。

2. 构建Docker镜像

创建完Dockerfile后,你可以使用以下命令来构建镜像:

bash
docker build -t your-image-name .

3. 运行Docker容器

最后,你可以通过以下命令来运行你的Docker容器,这里使用了无头模式启动Chrome:

bash
docker run -d --name your-container-name your-image-name node your-app.js

在你的Node.js应用中,你可以使用Puppeteer(一个Node库,它提供了高级API来控制Chrome或Chromium)来以无头模式启动Chrome:

javascript
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: true, // 启动无头模式 args: ['--no-sandbox', '--disable-setuid-sandbox'] }); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({path: 'example.png'}); await browser.close(); })();

结论

这样就可以在Docker容器中运行Google Chrome无头模式了。这种设置非常适合自动化测试和网页抓取任务,因为它可以在隔离的环境中运行,而不受外部因素影响。

2024年7月23日 13:36 回复

你的答案