当前位置: 首页 > article >正文

Docker容器化 | 超简单部署 FireCrawl

灵感来源

  • 【RAG实战】Docker容器化 🔥 FireCrawl | 基于docker-compose.yaml一键运行的网页解析API
  • 参考仓库地址

建议给大佬点点star,这么简单的教程非常实用

测试环境

  • ubuntu 24.04

可能要安装的依赖

sudo apt install docker-buildx

拉取FireCrawl官方仓库

git clone https://github.com/mendableai/firecrawl.git

需要新增的dockerfile文件

路径: 根目录/apps/api/server.Dockerfile

# server.Dockerfile
FROM node:lts AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
LABEL fly_launch_runtime="Node.js"
RUN corepack enable
COPY . /app
WORKDIR /app

FROM base AS prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile

FROM base AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile

RUN pnpm install
RUN pnpm run build:nosentry

FROM base
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y chromium chromium-sandbox && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives
COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app /app

# Start the server by default, this can be overwritten at runtime
EXPOSE 3002
ENV PUPPETEER_EXECUTABLE_PATH="/usr/bin/chromium"
CMD [ "pnpm", "run", "start:production" ]

路径: 根目录/apps/api/worker.Dockerfile

# worker.Dockerfile
FROM node:lts AS base
# 添加 corepack_npm_registry 环境变量,你可以根据需要修改其值
ENV COREPACK_NPM_REGISTRY=https://registry.npmmirror.com
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
LABEL fly_launch_runtime="Node.js"
RUN corepack enable
COPY . /app
WORKDIR /app

FROM base AS prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile

FROM base AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN pnpm install
RUN pnpm run build:nosentry

FROM base
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y chromium chromium-sandbox && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives
COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app /app

EXPOSE 8080
ENV PUPPETEER_EXECUTABLE_PATH="/usr/bin/chromium"
CMD [ "pnpm", "run", "worker:production" ]

执行docker镜像构建

构建: plb/firecrawl-worker:local

先切换到路径: 根目录/apps/api/ ,然后执行:

# docker buildx build -f worker.Dockerfile -t {你自定义的Worker镜像}:{标签名}
# 我这边设置镜像名: plb/firecrawl-worker:local
sudo docker buildx build -f worker.Dockerfile -t plb/firecrawl-worker:local .

然后就能构建出一个名字 plb/firecrawl-worker:local 的镜像,接下来构建 plb/firecrawl-server:local 镜像。

构建: plb/firecrawl-server:local
# docker buildx build -f server.Dockerfile -t {你自定义的Worker镜像}:{标签名}
# 我这边设置镜像名: plb/firecrawl-server:local
sudo docker buildx build -f server.Dockerfile -t plb/firecrawl-server:local .

创建docker-compose.ymal文件

这个文件是用来同时启动上面两个镜像的,记得替换关键镜像名字

路径: 根目录/apps/api/docker-compose.yaml

# docker-compose.yaml
version: '3.1'
services:
  redis:
    image: redis:latest
    restart: always
    volumes:
      - redis_data:/data

  worker:
    environment:
      - REDIS_URL=redis://redis:6379
      - USE_DB_AUTHENTICATION=false
    image: plb/firecrawl-worker:local
    pull_policy: always
    restart: always

  server:
    environment:
      - REDIS_URL=redis://redis:6379
      - USE_DB_AUTHENTICATION=false
      - HOST=0.0.0.0
    image: plb/firecrawl-server:local
    pull_policy: always
    ports:
      - "3002:3002"
    restart: always
    
volumes:
  redis_data:

开始运行已经构建好的docker镜像

切换到路径: 根目录/apps/api/

docker compose up

测试是否成功

curl -X GET http://localhost:3002/test

如果有返回值,那么就是部署成功了。


http://www.kler.cn/a/552483.html

相关文章:

  • iOS 上自定义编译 FFmpeg
  • Redis的简单使用
  • cs*n 网页内容转为html 加入 onenote
  • 抖音IP属地显示:准确性与关闭方法全解析
  • 新能源汽车充电桩运营模式,开启绿色出行新篇
  • 【基础架构篇十二】《DeepSeek多租户架构:企业级SaaS服务设计》
  • Jtti:centos主机如何搭建lnmp环境
  • 机器学习基础(第3个月):监督学习、无监督学习、模型评估指标(准确率、召回率等)
  • 【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)— 4.4 文本分类与情感分析】
  • linux redis ipv6、ipv4 只接收本地访问、接收本地和远程访问
  • 第二十四章 R 开头的术语
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • idea无法联网,离线安装插件
  • Go 自动升级依赖版本
  • 【设计模式】【结构型模式】享元模式(Flyweight)
  • Docker容器中如何识别Linux系统并安装软件?新手避坑指南
  • spring cloud gateway限流常见算法
  • Docker 镜像标签使用
  • 代码随想录算法营Day42 | 322. 零钱兑换,279. 完全平方数,139. 单词拆分
  • IP证书 vs SSL证书:数字安全的两条技术路径与未来博弈