正在学习 LangChain,先搞了个简单的 LangChain docker 环境,方便后面进行 LangChain 代码开发、运行,也避免各种环境的杂乱无章。主要思路如下:

  • 1、编写一个Dockerfile,包含 LangChain 开发必要的软件包
  • 2、编写一个简单的docker compose 文件,可以在开发目录加载 LangChain 环境

一、Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FROM python:3.9-slim-bullseye

RUN apt-get -y update && \
pip install --upgrade pip && \
pip install langchain && \
pip install langchain_openai && \
pip install "langserve[all]" && \
pip install datasets && \
pip install faiss-cpu && \
pip install beautifulsoup4 && \
pip install langchainhub && \
pip install langchain-cli && \
pip install langsmith && \
pip install pydantic==1.10.13

WORKDIR /app

CMD ["python3"]

将上面的代码存为Dockerfile,运行 docker build -t eryxlee0901/langchain . 即可生成可用镜像。也可以直接docker pull eryxlee0901/langchain:latest 拉取。

二、docker compose

为了使用方便,加了一个docker-compose.yml文件,该文件主要目的是为了加载环境变量、配置目录结构,无需在代码中再去加载。

1
2
3
4
5
6
7
8
9
10
11
services:
langchain:
image: eryxlee0901/langchain:latest
tty: true
restart: no
ports:
- 8000:8000
volumes:
- .:/app
env_file:
- .env

三、使用

  1. 新建项目目录,在该目录下写入上面的docker-compose.yml文件。
  2. 创建一个.env文件,里面包含 OPENAI_API_KEY、OPENAI_BASE_URL等环境变量,由docker compose载入。

主要使用命令如下:

1
2
3
4
5
6
# 进入容器
docker compose run langchain bash
# 开启python环境
docker compose run langchain python
# 运行langchain文件
docker compose run langchain python first-test.py

在多次使用后,会有一些已退出docker 容器存在,需要使用docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') 命令来删除它们。