首頁 > web前端 > js教程 > 與 Daytona 的約會:探索 AstroJS 和 Sanity CMS

與 Daytona 的約會:探索 AstroJS 和 Sanity CMS

Linda Hamilton
發布: 2025-01-06 02:44:43
原創
253 人瀏覽過

最近,在開發我的部落格應用程式時,我透過 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板