一个 Hello Dart Docker 服务和 Kubernetes
一个简单的 HTTP 示例,包含 Docker 和 Kubernetes
- 使用 dart shelf 库的 HTTP 服务器,监听默认端口 8080(可以通过参数和环境变量覆盖)
- Docker 配置,包含 Dart AOT 编译(生成小巧高效的可执行文件)
- Kubernetes 配置
运行示例
使用 Dart SDK 运行
您可以使用 Dart SDK 如下运行示例(可能会使用可选参数 –port=8080)
$ dart run app/lib/server.dart
Server listening on port 8080
使用 AOT 编译的可执行文件运行
使用编译好的可执行文件运行
$ dart compile exe ./app/lib/server.dart -o ./bin/server # server.exe for windows
$ ./bin/server
Server listening on port 8080
使用 Docker 运行
如果您安装了 Docker Desktop,您可以使用 docker 命令进行构建和运行
$ docker build . -f docker/Dockerfile -t hello-server
$ docker run --name hello-server --rm -it -p 8080:8080 hello-server
Server listening on port 8080
要停止,请按 Ctrl+C 或从第二个终端操作
$ docker kill --signal=SIGINT hello-server
在 Kubernetes 中运行
构建 Docker 镜像后(使用与 docker run 相同的映射)
$ kubectl apply -f kubernetes/deployment.yaml
要滚动更新 Docker 镜像
$ kubectl rollout restart deployment hello-server
测试
从第二个终端操作
$ curl https://:8080
Hello, World!
$ curl https://:8080/echo/I_love_Dart
I_love_Dart
您应该会在第一个终端看到打印的日志
2021-05-06T15:47:04.620417 0:00:00.000158 GET [200] /
2021-05-06T15:47:08.392928 0:00:00.001216 GET [200] /echo/I_love_Dart
参考
-
Docker 概述 https://docs.container.net.cn/get-started/overview/
-
Docker 最佳实践 https://docs.container.net.cn/develop/develop-images/dockerfile_best-practices/
-
Docker CLI https://docs.container.net.cn/engine/reference/run/
-
开始使用 Kubernetes (使用 Python) 来自 2019 年:非常清晰的逐步指南 https://kubernetes.ac.cn/blog/2019/07/23/get-started-with-kubernetes-using-python/
-
什么是 Kubectl Rollout Restart 关于镜像更新、部署和重启的精彩指南 https://linuxhint.com/kubectl-rollout-restart/