首页 web前端 js教程 与 Daytona 的约会:探索 AstroJS 和 Sanity CMS

与 Daytona 的约会:探索 AstroJS 和 Sanity CMS

Jan 06, 2025 am 02:44 AM

最近,在开发我的博客应用程序时,我通过 quira.sh 上正在进行的 Quest 23 发现了 Daytona——一个强大的开发环境管理器。在本博客中,我们将探讨 AstroJSSanityDaytona 如何显着增强此博客应用程序的开发过程。


什么是代托纳?

A Date with Daytona: Exploring AstroJS and Sanity CMS

Daytona 是一个开源的开发环境管理器 (DEM),旨在简化开发环境的管理和部署,称为工作区。这些工作区构建在 Docker 容器 上,并且与 DevContainer 标准完全兼容。

代托纳的主要特点:

  • 模块化架构:实现与 Dockerfiles、Docker Compose、Nix 和 Devfile 等配置标准的兼容性。

  • 简化部署:使用单个命令部署功能齐全的开发环境,而 Daytona 会为您管理所有底层复杂性。

  • DevContainers Foundation:利用多功能 DevContainers 标准来定义和管理基于云的开发环境。


开发容器和配置

DevContainers 标准允许您使用存储库上 .devcontainer 文件夹下的 devcontainer.json 文件轻松配置开发环境。

A Date with Daytona: Exploring AstroJS and Sanity CMS

DevContainer 的优点:

DevContainers 允许您根据您的特定需求定义自定义、功能丰富且优化的开发环境。它还支持 Dockerfile 和 Docker Compose 配置以实现无缝集成。

有关更多详细信息,请探索 DevContainers 及其功能。

devcontainer.json 的示例

这是使用 AstroJSSanity 的项目示例配置:

{
    "name": "Astro + Sanity Dev Container",
    "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
    "features": {
        "ghcr.io/devcontainers/features/node:1": {
            "version": "20",
            "pnpmVersion": "9.12.2"
        },
        "ghcr.io/devcontainers/features/git:1": {}
    },
    "forwardPorts": [4321, 3333],
    "customizations": {
        "vscode": {
            "extensions": [
                "astro-build.astro-vscode",
                "esbenp.prettier-vscode",
                "dbaeumer.vscode-eslint",
                "eamodio.gitlens",
                "styled-components.vscode-styled-components",
                "ms-vscode.vscode-typescript-next"
            ],
            "settings": {
                "astro.enableAutoImport": true,
                "editor.formatOnSave": true,
                "typescript.tsdk": "/node_modules/typescript/lib",
                "eslint.format.enable": true,
                "files.eol": "\n",
                "prettier.requireConfig": true
            }
        }
    },
    "containerEnv": {
        "NODE_ENV": "development",
        "PNPM_HOME": "/tmp/pnpm-store"
    },
    "postCreateCommand": {
        "install-dependencies": "pnpm config set store-dir /tmp/pnpm-store && pnpm install",
        "env-file-create": "/bin/bash ./create-env-file.sh"
    },
    "portsAttributes": {
        "3333": { "label": "Sanity Studio" },
        "4321": { "label": "Astro Dev Port" }
    }
}
登录后复制
登录后复制
登录后复制

关键部分:

  • image:指定开发环境的基础镜像。
  • 功能:将预配置的工具或实用程序添加到容器中。
  • forwardPorts:将端口从容器映射到主机。
  • 自定义:指定编辑器配置,例如扩展、设置和格式首选项,特别是 VS Code。
  • containerEnv:设置容器的环境变量。
  • postCreateCommand:创建容器后运行命令(例如,安装依赖项)。
  • portsAttributes:开发中使用的特定端口的标签。

有关更多配置选项,请查看 DevContainer JSON 参考。


代托纳的先决条件

在下载 Daytona 之前,需要满足一些先决条件:

  • Docker
  • 文本编辑器/IDE 如 VSCode、JetBrains 等
  • SSH 客户端,访问远程服务器所需

下载代托纳

Daytona 适用于所有主要操作系统。按照安装指南进行设置。

然后使用以下命令,启动daytona:

daytona
登录后复制
登录后复制

A Date with Daytona: Exploring AstroJS and Sanity CMS


开始代托纳

要启动 Daytona,您需要在守护进程模式或当前终端会话中启动其服务器进程。

注意:确保 Docker Daemon 也在后台运行。

  • 以守护进程模式启动 Daytona 服务器进程:
daytona server start
登录后复制
登录后复制

注意:Windows 计算机不支持 Daytona Daemon 模式。您需要使用以下命令在当前终端会话中启动服务器:

daytona serve
登录后复制

A Date with Daytona: Exploring AstroJS and Sanity CMS


添加您的 Git 提供程序

要连接您的 Git 提供商(例如 GitHub、GitLab),请使用以下命令:

daytona git-providers add
登录后复制

按照屏幕上的说明集成您的 Git 配置文件。完成后,您可以访问 Git 存储库上托管的项目。


设置您的 IDE

Daytona 允许开发环境在任何流行的 IDE 上运行。只需运行以下命令并选择您选择的 IDE:

daytona ide
登录后复制

A Date with Daytona: Exploring AstroJS and Sanity CMS


使用 Daytona 进行开发

为了有效地利用 Daytona,您需要一个项目,其中包含一个 devcontainer.json 文件,该文件放置在存储库中的 .devcontainer 文件夹下。

为了方便使用,我们将使用这个项目。

Daytona 入门命令:

  • 创建一个开发容器,对启动特定项目等环境或尝试示例项目之一进行精细控制:
{
    "name": "Astro + Sanity Dev Container",
    "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
    "features": {
        "ghcr.io/devcontainers/features/node:1": {
            "version": "20",
            "pnpmVersion": "9.12.2"
        },
        "ghcr.io/devcontainers/features/git:1": {}
    },
    "forwardPorts": [4321, 3333],
    "customizations": {
        "vscode": {
            "extensions": [
                "astro-build.astro-vscode",
                "esbenp.prettier-vscode",
                "dbaeumer.vscode-eslint",
                "eamodio.gitlens",
                "styled-components.vscode-styled-components",
                "ms-vscode.vscode-typescript-next"
            ],
            "settings": {
                "astro.enableAutoImport": true,
                "editor.formatOnSave": true,
                "typescript.tsdk": "/node_modules/typescript/lib",
                "eslint.format.enable": true,
                "files.eol": "\n",
                "prettier.requireConfig": true
            }
        }
    },
    "containerEnv": {
        "NODE_ENV": "development",
        "PNPM_HOME": "/tmp/pnpm-store"
    },
    "postCreateCommand": {
        "install-dependencies": "pnpm config set store-dir /tmp/pnpm-store && pnpm install",
        "env-file-create": "/bin/bash ./create-env-file.sh"
    },
    "portsAttributes": {
        "3333": { "label": "Sanity Studio" },
        "4321": { "label": "Astro Dev Port" }
    }
}
登录后复制
登录后复制
登录后复制
  • 直接从 Git 存储库启动开发容器:
daytona
登录后复制
登录后复制

您将开始在控制台中看到开发容器的日志:

A Date with Daytona: Exploring AstroJS and Sanity CMS

等待一段时间后,您将看到一条成功消息,并且打开了您选择的 IDE 的新窗口,其中已经设置了与开发容器的 SSH 连接,您可以在其中开始开发项目,就像在您的设备上一样本机 PC 或笔记本电脑。

A Date with Daytona: Exploring AstroJS and Sanity CMS

A Date with Daytona: Exploring AstroJS and Sanity CMS


与代托纳一起开发

我们将遵循示例 AstroJS Sanity 博客的 README.md 开始使用 Daytona 进行开发。

后续步骤:生成健全的凭据并设置环境变量

  1. 登录 Sanity:首先登录您的 Sanity 帐户并创建一个新项目即可开始。

  2. 生成 API 令牌:导航到 Sanity 项目设置中的 API 部分并创建一个新令牌。这将提供设置环境变量所需的密钥。

A Date with Daytona: Exploring AstroJS and Sanity CMS

生成 API 令牌后,请使用它来配置项目的环境变量,如文档中所述。

运行项目

现在,在单独的终端窗口中运行以下命令:

要启动我们的 AstroJS 应用程序,请运行以下命令:

daytona server start
登录后复制
登录后复制

A Date with Daytona: Exploring AstroJS and Sanity CMS

AstroJS 应用程序是前端,我们可以在其中阅读我们从后端(即 Sanity CMS)发布的博客!

要访问我们的 Sanity Studio,请运行以下命令:

{
    "name": "Astro + Sanity Dev Container",
    "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
    "features": {
        "ghcr.io/devcontainers/features/node:1": {
            "version": "20",
            "pnpmVersion": "9.12.2"
        },
        "ghcr.io/devcontainers/features/git:1": {}
    },
    "forwardPorts": [4321, 3333],
    "customizations": {
        "vscode": {
            "extensions": [
                "astro-build.astro-vscode",
                "esbenp.prettier-vscode",
                "dbaeumer.vscode-eslint",
                "eamodio.gitlens",
                "styled-components.vscode-styled-components",
                "ms-vscode.vscode-typescript-next"
            ],
            "settings": {
                "astro.enableAutoImport": true,
                "editor.formatOnSave": true,
                "typescript.tsdk": "/node_modules/typescript/lib",
                "eslint.format.enable": true,
                "files.eol": "\n",
                "prettier.requireConfig": true
            }
        }
    },
    "containerEnv": {
        "NODE_ENV": "development",
        "PNPM_HOME": "/tmp/pnpm-store"
    },
    "postCreateCommand": {
        "install-dependencies": "pnpm config set store-dir /tmp/pnpm-store && pnpm install",
        "env-file-create": "/bin/bash ./create-env-file.sh"
    },
    "portsAttributes": {
        "3333": { "label": "Sanity Studio" },
        "4321": { "label": "Astro Dev Port" }
    }
}
登录后复制
登录后复制
登录后复制

A Date with Daytona: Exploring AstroJS and Sanity CMS

Sanity Studio 用于管理我们的 AstroJS 应用程序的内容。我们可以直接从 Sanity Studio 创建、删除和操作 AstroJS 应用程序的数据。


结论

只需一个工具,我们就可以建立一个成熟的开发环境,提供本机设置的所有功能。无论您是经验丰富的开发人员还是新手,Daytona 强大的功能以及与 AstroJS 和 Sanity 等现代工具的无缝集成都值得探索。

我在 Daytona 的开发之旅非常出色,并且我对 DevContainers、Docker 和一般开发环境有了深入的了解。

一定要检查它们并给它们加注星标——它们是开源的:Daytona!

A Date with Daytona: Exploring AstroJS and Sanity CMS

此外,请随意探索我在 daytona 上的示例项目:AstroJS Sanity 博客。

以上是与 Daytona 的约会:探索 AstroJS 和 Sanity CMS的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript引擎:比较实施 JavaScript引擎:比较实施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript:探索网络语言的多功能性 JavaScript:探索网络语言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

如何使用Next.js(前端集成)构建多租户SaaS应用程序 如何使用Next.js(前端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:22 AM

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

使用Next.js(后端集成)构建多租户SaaS应用程序 使用Next.js(后端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务

See all articles