Docker Compose
Docker Compose 是一个用于定义和运行多容器的 Docker 工具。它允许你使用 YAML 文件配置应用程序的服务、网络和卷,然后使用单个命令启动所有运行所需的容器,包括应用程序的依赖中间件和服务。
注意:
安装 Docker Compose 最方便最推荐的方式是安装 Docker 桌面版。Docker 桌面版包含了 Docker 引擎,Docker CLI 和 Docker Compose。
按需安装 Compose:https://docs.docker.com/compose/install/
添加 compose/docker-compose.yml:
services:
lr-fulltext-books-node:
build:
context: ../
dockerfile: Dockerfile
ports:
- 3000:3000
volumes:
- ./config.json:/usr/src/app/config.json
depends_on:
es:
condition: service_started
es:
image: bitnami/elasticsearch:latest
ports:
- 9200:9200
volumes:
- ~/lr-es-data:/bitnami/elasticsearch/data
添加 compose/config.json:
{
"app": {
"port": 3000,
"page_size": 10
},
"search": {
"address": "http://es:9200",
"index": "book_idx_cn"
}
}
运行所有服务:
cd compose
docker compose up
你将看到如下内容:
[+] Running 2/2
✔ Container compose-es-1 Created 0.0s
✔ Container compose-lr-fulltext-books-py-1 Created 0.0s
Attaching to es-1, lr-fulltext-books-1
es-1 | elasticsearch 15:18:14.49 INFO ==> Welcome to the Bitnami elasticsearch container
es-1 | elasticsearch 15:18:14.51 INFO ==> ** Starting Elasticsearch setup **
...
你不再需要手动安装设置 Elasticsearch。它们都被 docker compose 搞定了。
如果没有数据的话,放入测试图书数据。
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"哈利·波特与魔法石","author":"J.K. 罗琳","published_at":"1997-06-26","content":"一个年轻男孩发现自己是一名巫师,并开始在霍格沃茨魔法学校接受教育,在那里他揭开了“魔法石”的秘密。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"杀死一只知更鸟","author":"哈珀·李","published_at":"1960-07-11","content":"小说设置在大萧条期间的美国南部,通过年轻的斯考特·芬奇的眼睛探索了种族不义和道德成长的主题。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"魔戒","author":"J.R.R. 托尔金","published_at":"1954-07-29","content":"一个名叫弗罗多·巴金斯的霍比特人踏上了一场艰险的旅程,摧毁一枚强大的戒指,并拯救中土世界,免受黑暗领主索伦的侵害。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"麦田里的守望者","author":"J.D. 赛林格","published_at":"1951-07-16","content":"霍尔顿·考菲尔德在被驱逐出预备学校后,讲述了他在纽约市的经历,探讨了疏远、身份和纯真等主题。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"牧羊少年奇幻之旅","author":"保罗·柯艾略","published_at":"1988-01-01","content":"牧羊人圣地亚哥从西班牙前往埃及,寻找埋在金字塔附近的宝藏。沿途,他学到了追随梦想的重要性。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"饥饿游戏","author":"苏珊·柯林斯","published_at":"2008-09-14","content":"在一个反乌托邦的未来,青少年被迫参加名为饥饿游戏的电视死斗。凯特尼斯·艾弗丁自愿代替妹妹参加,并成为叛乱的象征。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"1984","author":"乔治·奥威尔","published_at":"1949-06-08","content":"温斯顿·史密斯生活在一个由党领导的极权社会中。他反抗压迫性的政权,但最终屈服于其控制。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"龙纹身的女孩","author":"斯蒂格·拉尔森","published_at":"2005-08-01","content":"记者米卡埃尔·布隆奎斯特和黑客丽斯贝特·萨兰德调查了一个富裕家庭的年轻女子失踪案,揭示了黑暗的秘密和腐败。"}' \
http://localhost:3000/books
curl -X POST \
-H "Content-Type: application/json" \
-d '{"title":"消失的女孩","author":"吉莲·弗林","published_at":"2012-06-05","content":"在他们的第五个结婚纪念日上,尼克·邓恩的妻子艾米失踪了。随着媒体的狂热报道和怀疑的增加,尼克发现自己陷入了一场欺骗和背叛的旋涡中。"}' \
http://localhost:3000/books
现在,如果你访问页面 http://localhost:3000/books?q=new+york+girl ,你将看到所有相关文档。
使用其他查询尝试 http://localhost:3000/books?q=boy+mystery ,看看有什么结果。
你的全文检索 API 服务成功啦! 📢
Loading...
> 此处输出代码运行结果