快速参考
-
由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
达特·多克尔团队 -
哪里可以获得帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
支持的标签及各自的 Dockerfile 链接
快速参考(续)
-
已发布的图像伪影细节:
repo-info repo 的repos/dart/目录(历史记录)
(图像元数据、传输大小等) -
图像更新:
官方图像仓库的library/dart标签
官方图像存储库的library/dart文件(历史记录) -
此描述的来源:
文档库的dart/目录(历史记录)
什么是 Dart?
Dart 是一种针对客户端优化的语言,用于在任何平台上开发快速应用程序。其目标是为多平台开发提供最高效的编程语言,并搭配一个灵活的执行运行时平台用于应用程序框架。欲了解更多详情,请访问 https://dart.dev 。
通过利用 Dart 对提前(AOT)编译为可执行文件的支持,您可以创建非常小的运行时映像(约 10MB)。
使用此图像
我们建议使用利用 Dart 对提前(AOT)编译为可执行文件的支持的小型运行时映像。这能够创建小型运行时映像(约 10MB)。
创建一个 Dart 服务器应用程序
安装 Dart SDK 版本 2.14 或更高版本后,使用 dart 命令创建新的服务器应用程序:
$ dart create -t server-shelf myserver
使用 Docker Desktop 运行服务器
如果您已安装 Docker Desktop,则可以使用 docker 命令在您的机器上进行构建和运行:
$ docker build -t dart-server .
$ docker run -it --rm -p 8080:8080 --name myserver dart-server
完成后,您可以使用您提供的名称停止容器:
$ docker kill myserver
图像文档
Dockerfile
由 dart 工具创建的 Dockerfile 执行两个步骤:
-
使用
dart:stable图像中的 Dart SDK,将您的服务器(bin/server.dart)编译为可执行文件(server)。 -
通过将编译后的服务器与 Dart VM 运行时以及位于
/runtime/的所需依赖项相结合来组装运行时映像。Specify the Dart SDK base image version using dart:
(ex: dart:2.12) FROM dart:stable AS build
Resolve app dependencies.
WORKDIR /app COPY pubspec.* ./ RUN dart pub get
Copy app source code and AOT compile it.
COPY . .
Ensure packages are still up-to-date if anything has changed
RUN dart pub get --offline RUN dart compile exe bin/server.dart -o bin/server
Build minimal serving image from AOT-compiled
/serverand required systemlibraries and configuration files stored in
/runtime/from the build stage.FROM scratch COPY --from=build /runtime/ / COPY --from=build /app/bin/server /app/bin/
Start server.
EXPOSE 8080 CMD ["/app/bin/server"]
.dockerignore
此外,它会创建一个推荐的 .dockerignore 文件,该文件列举了应从构建的 Docker 映像中省略的文件:
.dockerignore
Dockerfile
build/
.dart_tool/
.git/
.github/
.gitignore
.packages
--
由 Dart 团队用心维护。
许可证
查看此映像中所包含软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 dart/ 目录中找到。
对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。