首页 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)

前端热敏纸小票打印遇到乱码问题怎么办? 前端热敏纸小票打印遇到乱码问题怎么办? Apr 04, 2025 pm 02:42 PM

前端热敏纸小票打印的常见问题与解决方案在前端开发中,小票打印是一个常见的需求。然而,很多开发者在实...

神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

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

谁得到更多的Python或JavaScript? 谁得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

JavaScript难以学习吗? JavaScript难以学习吗? Apr 03, 2025 am 12:20 AM

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何实现视差滚动和元素动画效果,像资生堂官网那样?
或者:
怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? 如何实现视差滚动和元素动画效果,像资生堂官网那样? 或者: 怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? Apr 04, 2025 pm 05:36 PM

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

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

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

如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? 如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

Zustand异步操作:如何确保useStore获取的最新状态? Zustand异步操作:如何确保useStore获取的最新状态? Apr 04, 2025 pm 02:09 PM

zustand异步操作中的数据更新问题在使用zustand状态管理库时,经常会遇到异步操作导致数据更新不及时的问题。�...

See all articles