使用PyCharm、Docker和Azure Container Apps进行聊天机器人的开发和构建
概述
我使用PyCharm和Docker进行开发,并将其部署到Azure上。
在PyCharm中,我们不仅使用Docker,还使用了docker-compose。但是奇怪的是,直接在Docker外部指定的端口无法正常工作,所以我们通过docker-compose来处理。当从Docker Desktop启动或部署应用程序时,一切都正常,所以我认为问题出在PyCharm的配置上。
源代码
请注意,本文未对源代码进行解释。请适时参考下面给出的源代码。
- https://github.com/hydrangeas/langchain-chainlit-test
建筑设计

目录结构
.
|-- .chainlit
| `-- config.toml ..Chainlitの設定ファイル
|-- Dockerfile
|-- chainlit.md ..Chainlit上で表示するReadme
|-- docker-compose.yml
|-- main.py ..チャットボットフロントエンド用Pythonファイル(Chainlit)
|-- make_data.py ..ドキュメントデータベース作成用Pythonふぃある
|-- public
| |-- favicon.ico ..Chainlitで変更するfavicon
| |-- logo_dark.png ..ダークテーマ用ロゴ
| `-- logo_light.png ..通常テーマ用ロゴ
|-- requirements.txt
`-- samples
`-- 001018385.pdf ..チャットボット用のデータサンプル
在PyCharm中配置Docker。
请参考Dockerfile来配置Docker。基本上只要有创建.env文件,就可以直接复制本地文件并构建。此外,由于仅使用Docker无法启动,因此还需要构建docker-compose。
请事先创建.env文件。环境变量(API密钥)不是从Docker外部传递,而是作为文件传递给内部。
添加执行配置




Azure容器注册表
创建ACR资源


向ACR的推送
在将其推送到 ACR 之前,最好先将已构建的 Docker 镜像的标签与要推送的目的地相匹配,这样更简单。
示例命令:docker tag langchain-chainlit-test-web acrchainlit.azurecr.io/langchain-chainlit-test-web
示例命令:docker tag langchain-chainlit-test-web acrchainlit.azurecr.io/langchain-chainlit-test-web
az login
az acr login --name acrchainlit
docker push acrchainlit.azurecr.io/langchain-chainlit-test-web
Azure容器应用
ACA资源创建



成果

感想
有几个关键点是困扰的。
-
- 在Web Apps中,Python3.11附带的SQLite版本不足,无法启动Chainlit(无法解决)。
-
- 在Vercel中,甚至无法启动(原因不明)。
-
- 在其他免费环境中,由于Python库太大,经常无法部署。
-
- 在PyCharm中设置解释器时,无法完成设置(配置完成后立即结束)。
- 如果在ACA设置时不设置目标端口,则无法访问(由于不熟悉,找起来花了很多时间)。
大约花了一个星期的时间,终于建立起了我所期望的环境。