最近,在開發我的部落格應用程式時,我透過 quira.sh 上正在進行的 Quest 23 發現了 Daytona——一個強大的開發環境管理器。在本部落格中,我們將探討 AstroJS、Sanity 和 Daytona 如何顯著增強此部落格應用程式的開發過程。
Daytona 是一個開源的開發環境管理器 (DEM),旨在簡化開發環境的管理和部署,稱為工作區。這些工作區建構在 Docker 容器 上,並且與 DevContainer 標準完全相容。
模組化架構:實現與 Dockerfiles、Docker Compose、Nix 和 Devfile 等配置標準的兼容性。
簡化部署:使用單一指令部署功能齊全的開發環境,而 Daytona 會為您管理所有底層複雜性。
DevContainers Foundation:利用多功能 DevContainers 標準來定義和管理基於雲端的開發環境。
DevContainers 標準可讓您使用儲存庫上 .devcontainer 資料夾下的 devcontainer.json 檔案輕鬆配置開發環境。
DevContainers 讓您可以根據您的特定需求定義自訂、功能豐富且最佳化的開發環境。它還支援 Dockerfile 和 Docker Compose 配置以實現無縫整合。
有關更多詳細信息,請探索 DevContainers 及其功能。
這是使用 AstroJS 和 Sanity 的專案範例設定:
{ "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" } } }
有關更多設定選項,請查看 DevContainer JSON 參考。
在下載 Daytona 之前,需要滿足一些先決條件:
Daytona 適用於所有主要作業系統。請按照安裝指南進行設定。
然後使用以下指令,啟動daytona:
daytona
要啟動 Daytona,您需要在守護程序模式或目前終端會話中啟動其伺服器程序。
注意:確保 Docker Daemon 也在背景運作。
daytona server start
注意:Windows 電腦不支援 Daytona Daemon 模式。您需要使用以下命令在目前終端機會話中啟動伺服器:
daytona serve
要連接您的 Git 提供者(例如 GitHub、GitLab),請使用以下命令:
daytona git-providers add
按照螢幕上的指示整合您的 Git 設定檔。完成後,您可以存取 Git 儲存庫上託管的項目。
Daytona 允許開發環境在任何流行的 IDE 上運作。只需執行以下命令並選擇您選擇的 IDE:
daytona ide
為了有效地利用 Daytona,您需要一個項目,其中包含一個 devcontainer.json 文件,該文件放置在儲存庫中的 .devcontainer 資料夾下。
為了方便使用,我們將使用這個項目。
{ "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" } } }
daytona
您將開始在控制台中看到開發容器的日誌:
等待一段時間後,您將看到一條成功訊息,並且打開了您選擇的IDE 的新窗口,其中已經設定了與開發容器的SSH 連接,您可以在其中開始開發項目,就像在您的裝置上一樣本機PC 或筆記型電腦。
我們將遵循範例 AstroJS Sanity 部落格的 README.md 開始使用 Daytona 進行開發。
登入 Sanity:先登入您的 Sanity 帳戶並建立新專案即可開始。
產生 API 令牌:導覽至 Sanity 專案設定中的 API 部分並建立一個新令牌。這將提供設定環境變數所需的密鑰。
產生 API 令牌後,請使用它來配置專案的環境變量,如文件中所述。
現在,在單獨的終端機視窗中執行以下命令:
要啟動我們的 AstroJS 應用程序,請執行以下命令:
daytona server start
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" } } }
Sanity Studio 用於管理我們的 AstroJS 應用程式的內容。我們可以直接從 Sanity Studio 建立、刪除和操作 AstroJS 應用程式的資料。
只需一個工具,我們就可以建立一個成熟的開發環境,提供本機設定的所有功能。無論您是經驗豐富的開發人員還是新手,Daytona 強大的功能以及與 AstroJS 和 Sanity 等現代工具的無縫整合都值得探索。
我在 Daytona 的開發之旅非常出色,我對 DevContainers、Docker 和一般開發環境有了深入的了解。
一定要檢查它們並給它們加註星標-它們是開源的:Daytona!
此外,請隨意探索我在 daytona 上的範例專案:AstroJS Sanity 部落格。
以上是與 Daytona 的約會:探索 AstroJS 和 Sanity CMS的詳細內容。更多資訊請關注PHP中文網其他相關文章!