Docker部署dart-frog服务

news2025/1/22 21:37:08

参考:

        dart-frog官网:https://dartfrog.vgv.dev/docs/overview

        使用 'Dart Frog' 体验 Dart 服务端开发 - 简书

打包项目

按照demo新增项目后,执行:

dart_frog build

等待build后生成 build 文件夹,这个文件夹就是需要部署的内容

需要注意,由于环境问题,需要编辑一下 build/Dockerfile 文件:

# Official Dart image: https://hub.docker.com/_/dart
# Specify the Dart SDK base image version using dart:<version> (ex: dart:2.17)

FROM dart:stable AS build

# 在此处添加PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL

ENV PUB_HOSTED_URL="https://pub.flutter-io.cn"
ENV FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"


WORKDIR /app

# Copy Dependencies


# Install Dependencies


# Resolve app dependencies.
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 `/server` and required system
# libraries 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.
CMD ["/app/bin/server"]
 

部署服务器

然后把 build/ 放到服务器

需要先查看Docker 有没有 dart 环境,如果没有就下载一下

docker pull dart:latest

在服务器下进入文件夹执行一下指令,构建项目(Custom Dockerfile)

docker build . -t dart-frog-app

如果没有修改Dockerfile文件,编译的时候会报错

[+] Building 49.2s (8/13)                                                                                docker:default
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 912B                                                                               0.0s
 => [internal] load metadata for docker.io/library/dart:stable                                                    21.9s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 126B                                                                                  0.0s
 => [build 1/7] FROM docker.io/library/dart:stable@sha256:7e0b4e5d3773c61b5d5b42908f48853fab04c33a080c6f73ee3a99b  0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 428B                                                                                  0.0s
 => CACHED [build 2/7] WORKDIR /app                                                                                0.0s
 => CACHED [build 3/7] COPY pubspec.* ./                                                                           0.0s
 => ERROR [build 4/7] RUN dart pub get                                                                            27.1s
------
 > [build 4/7] RUN dart pub get:
0.531 Resolving dependencies...
27.06 Got socket error trying to find package test at https://pub.dev.
------
Dockerfile:15
--------------------
  13 |     # Resolve app dependencies.
  14 |     COPY pubspec.* ./
  15 | >>> RUN dart pub get
  16 |
  17 |     # Copy app source code and AOT compile it.
--------------------
ERROR: failed to solve: process "/bin/sh -c dart pub get" did not complete successfully: exit code: 69

成功情况下

[+] Building 101.6s (14/14) FINISHED                                                                     docker:default
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 916B                                                                               0.0s
 => [internal] load metadata for docker.io/library/dart:stable                                                    88.6s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 126B                                                                                  0.0s
 => [build 1/7] FROM docker.io/library/dart:stable@sha256:7e0b4e5d3773c61b5d5b42908f48853fab04c33a080c6f73ee3a99b  0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 428B                                                                                  0.0s
 => CACHED [build 2/7] WORKDIR /app                                                                                0.0s
 => CACHED [build 3/7] COPY pubspec.* ./                                                                           0.0s
 => [build 4/7] RUN dart pub get                                                                                   6.9s
 => [build 5/7] COPY . .                                                                                           0.1s
 => [build 6/7] RUN dart pub get --offline                                                                         1.3s
 => [build 7/7] RUN dart compile exe bin/server.dart -o bin/server                                                 3.9s
 => [stage-1 1/2] COPY --from=build /runtime/ /                                                                    0.1s
 => [stage-1 2/2] COPY --from=build /app/bin/server /app/bin/                                                      0.1s
 => exporting to image                                                                                             0.1s
 => => exporting layers                                                                                            0.1s
 => => writing image sha256:248f909c7afe366ebd0f045fb76eac2c491d840ffa22ce9609df3c56ac42125a                       0.0s
 => => naming to docker.io/library/dart-frog-app                                                                   0.0s

View build details: docker-desktop://dashboard/build/default/default/vr5kryu8vmt430i7hgx6vl9jw

What's Next?
  1. Sign in to your Docker account → docker login
  2. View a summary of image vulnerabilities and recommendations → docker scout quickview

部署项目

docker run -i -t -p 8080:8080 dart-frog-app

成功情况下

✓ Running on http://:::8088

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

体验函数式组件简单实现Loading 加载(造轮子篇)

一、前言 最近想着优化一下网站&#xff0c;在文章列表页加一个Loading操作&#xff0c;于是就想到了函数式组件&#xff0c;于是本章就来和大家一起简单探讨下实现思路。 二、Loading设计 这里我想实现的效果是&#xff1a;当我们刷新页面的时候&#xff0c;前端请求接口&…

Linux 建立链接(ln)

目录 1、ln命令 创建软链接&#xff1a; 创建硬链接&#xff1a; 2、输出重定向&#xff08;>/>>&#xff09; 3、管道&#xff08;|&#xff09; 1、ln命令 &#xff08;英文全拼&#xff1a;link files&#xff09;为某一个文件在另外一个位置建立一个同步的…

R语言:ggplot2做柱状图,随机生成颜色。

#加载包 > library(ggplot2) > library(tidyverse) > library(openxlsx) > library(reshape2) > library(RColorBrewer) > library(randomcoloR) > library(viridis) > set.seed(1233) #设立种子数。 > palette <- distinctColorPalette(30) …

python爬取微博话题、关键词下方的所有帖子

文章目录 github repository项目介绍输出安装必备库获取cookiegithub repository 网址:https://github.com/dataabc/weibo-search 在GitHub获取到的非常成熟的微博话题、关键词等微博帖子的获取方案,并且可以指定一个或多个关键词,指定获取微博类型,指定获取日期等等。 项…

GIS学习

匹配查询,先连接两个表,然后在一个表里面查询 合并两个形状 比较好的colormap http://soliton.vm.bytemark.co.uk/pub/cpt-city/views/totp-cpt.html https://docs.gmt-china.org/latest/cpt/builtin-cpt/ 计算坡度时就要捕捉栅格 重分类时也要捕捉栅格 掩膜提取时也要捕…

详细教---用Django封装写好的模型

本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。 第一步&#xff1a;代码准备 热搜词条搜集代码&#xff1a; import requests from lxml import etreeurl "https://tophub.today/n/KqndgxeLl9" headers{User-Agent: Mozilla/5.…

Linux--如何在Linux上运行一个helloworld

一.安装vim和gcc sudo --是进入管理员模式 apt --是 Advanced Package Tool&#xff08;高级软件包工具&#xff09;的缩写&#xff0c;这是用于管理软件包的一种工具。 install --是安装的意思 后面跟软件的名称 完整的意思&#xff1a;在管理员的模式下安装 某个软件 …

自动驾驶决策 - 规划 - 控制 (持续更新!!!)

总目录 Frenet与Cartesian坐标系 Apollo基础 - Frenet坐标系 车辆模型 车辆运动学和动力学模型 控制算法 PID控制器轨迹跟随实现 Pure Pursuit控制器路径跟随 路径跟踪算法Stanley 实现 c 无人驾驶LQR控制算法 c 实现 MPC自动驾驶横向控制算法实现 c 双环PID控制详细讲解 …

安防监控视频汇聚平台EasyCVR v3.5播放HTTP-FMP4出现卡顿跳帧是什么原因?

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff08;专网、内网、局域网、广域网、公网等&#xff09;&#xff0c;支持设备通过4G、5G、WIFI、有线等方式接入&#xff0c;并将设备进行统一集中接入与视频汇聚管理&#xff0c;经平台接入的视频流能实现多…

推荐4个c++进度条开源库

在C中&#xff0c;有许多开源库可以帮助你创建进度条。以下是一些常用的C进度条库&#xff1a; 1. **indicators**: - GitHub链接: [https://github.com/p-ranav/indicators](https://github.com/p-ranav/indicators) - 特点: 轻量级&#xff0c;易于使用&#xff0c;支…

【Super数据结构】线性表中的顺序表VS链表,谁才是最强赢家?

&#x1f3e0;关于此专栏&#xff1a;Super数据结构专栏将使用C/C语言介绍顺序表、链表、栈、队列等数据结构&#xff0c;每篇博文会使用尽可能多的代码片段图片的方式。 &#x1f6aa;归属专栏&#xff1a;Super数据结构 &#x1f3af;每日努力一点点&#xff0c;技术累计看得…

3月19日做题

[NPUCTF2020]验证&#x1f40e; if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …

14|CAMEL:通过角色扮演脑暴一个鲜花营销方案

能否让 ChatGPT 自己生成这些引导文本呢&#xff1f; CAMEL 交流式代理框架 CAMEL 框架旨在通过角色扮演来促进交流代理之间的自主合作&#xff0c;并为其“认知”过程提供洞察。这种方法涉及使用启示式提示来指导聊天代理完成任务&#xff0c;同时保持与人类意图的一致性。…

哈尔滨工业大学 《材料物理》 笔记-3

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; 量…

Linux下安装Android Studio及创建桌面快捷方式

下载 官网地址&#xff1a;https://developer.android.com/studio?hlzh-cn点击下载最新版本即可 安装 将下载完成后文件&#xff0c;进行解压&#xff0c;然后进入android-studio-2023.2.1.23-linux/android-studio/bin目录下&#xff0c;启动studio.sh即可为了更加方便的使…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服…

2024-3-14-C++day4作业

1>思维导图 2> 要求&#xff1a; 成员函数版本实现算术运算符的重载 全局函数版本实现算术运算符的重载 源代码&#xff1a; #include <iostream>using namespace std;class Stu {friend const Stu operator/(const Stu &s1, const Stu &s2);private:i…

【RabbitMQ | 第六篇】消息重复消费问题及解决方案

文章目录 6.消息重复消费问题6.1问题介绍6.2解决思路6.3将该消息存储到Redis6.3.1将id存入string&#xff08;单消费者场景&#xff09;&#xff08;1&#xff09;实现思路&#xff08;2&#xff09;问题 6.3.2将id存入list中&#xff08;多消费场景&#xff09;&#xff08;1&…

雨云领先技术,即将推出雨盾CDN,助力云端安全与速度

随着数字化时代的不断发展&#xff0c;云计算和内容分发网络&#xff08;CDN&#xff09;的重要性日益凸显。作为行业领先的云计算服务提供商&#xff0c;雨云&#xff08;RainCloud&#xff09;即将推出其全新产品雨盾CDN&#xff0c;旨在为用户提供更安全、更高效的网络加速服…

Visual Studio 2013 - 调试模式下查看监视窗口

Visual Studio 2013 - 调试模式下查看监视窗口 1. 监视窗口References 1. 监视窗口 Ctrl Alt W&#xff0c;1-4&#xff1a;监视窗口 (数字键不能使用小键盘) or 调试 -> 窗口 -> 监视 -> 监视 1-4 调试状态下使用&#xff1a; 在窗口中点击空白行&#xff0c;…