|
1 | 1 | # Devbox 📦 |
2 | 2 |
|
3 | | -### 即时、简单、可预测地创建Shell与Container |
| 3 | +### 即时、简单、可预测地创建 Shell 与 Container |
4 | 4 |
|
5 | | -[](https://discord.gg/agbskCJXk2)  [](https://github.com/jetify-com/devbox/releases) [](https://github.com/jetify-com/devbox/actions/workflows/tests.yaml) |
| 5 | +[](https://discord.gg/jetify)  [](https://github.com/jetify-com/devbox/releases) [](https://github.com/jetify-com/devbox/actions/workflows/tests.yaml) |
6 | 6 |
|
7 | 7 | --- |
8 | 8 |
|
9 | 9 | ## 它是什么? |
10 | 10 |
|
11 | | -Devbox是一个可以让你轻松地创建隔离环境的shell与container的命令行工具。首先定义你开发环境中所需的软件包列表,随后Devbox使用该定义来为你的应用程序创建一个隔离的环境。 |
| 11 | +Devbox 是一个可以让你轻松地创建隔离环境的 shell 与 container 的命令行工具。首先定义你开发环境中所需的软件包列表,随后 Devbox 使用该定义来为你的应用程序创建一个隔离的环境。 |
12 | 12 |
|
13 | | -在实践中,Devbox的工作方式类似于像`yarn`这样的软件包管理器--只不过它所管理的软件包是操作系统级别的。(这些包你通常会通过`brew`和`apt-get`来进行安装)。 |
| 13 | +在实践中,Devbox 的工作方式类似于像`yarn`这样的软件包管理器--只不过它所管理的软件包是操作系统级别的。(这些包你通常会通过`brew`和`apt-get`来进行安装)。 |
14 | 14 |
|
15 | | -Devbox最初由[Jetify](https://www.jetify.com)进行开发,其内部由`nix`驱动。 |
| 15 | +Devbox 最初由[Jetify](https://www.jetify.com)进行开发,其内部由`nix`驱动。 |
16 | 16 |
|
17 | 17 | ## 示例 |
| 18 | + |
18 | 19 | 下面的例子创建了一个带有`python 2.7`和`go 1.18`的开发环境,尽管这些包并没有在底层机器中被安装。 |
19 | 20 |
|
20 | 21 |  |
21 | 22 |
|
22 | | - |
23 | 23 | ## 好处 |
24 | 24 |
|
25 | | -### 为团队中的每一个人提供一个统一的Shell |
| 25 | +### 为团队中的每一个人提供一个统一的 Shell |
26 | 26 |
|
27 | | -通过`devbox.json`文件来声明项目中所需要的工具列表,并运行`devbox shell`。这样,参与项目工作的每一个人都会获得一个与这些工具完全版本的shell环境。 |
| 27 | +通过`devbox.json`文件来声明项目中所需要的工具列表,并运行`devbox shell`。这样,参与项目工作的每一个人都会获得一个与这些工具完全版本的 shell 环境。 |
28 | 28 |
|
29 | 29 | ### 尝试新工具而不污染原先配置的环境 |
30 | 30 |
|
31 | | -由Devbox创建的开发环境与你的笔记本电脑中的其他东西是隔离的。有什么工具你想尝试,却又不想把环境弄得一团糟?可以把这个工具添加到Devbox的shell中,而当你不再需要它的时候,就可以把它删除--同时保持你的笔记本电脑始终是原始的状态。 |
| 31 | +由 Devbox 创建的开发环境与你的笔记本电脑中的其他东西是隔离的。有什么工具你想尝试,却又不想把环境弄得一团糟?可以把这个工具添加到 Devbox 的 shell 中,而当你不再需要它的时候,就可以把它删除--同时保持你的笔记本电脑始终是原始的状态。 |
32 | 32 |
|
33 | 33 | ### 不以牺牲速度为代价 |
34 | 34 |
|
35 | | -Devbox可以在你的笔记本电脑上直接创建隔离环境,而不需要额外的虚拟化以至于使得你的文件系统或每个命令都变得缓慢。当你准备打包时,就可以把它变成一个等效的container。 |
| 35 | +Devbox 可以在你的笔记本电脑上直接创建隔离环境,而不需要额外的虚拟化以至于使得你的文件系统或每个命令都变得缓慢。当你准备打包时,就可以把它变成一个等效的 container。 |
36 | 36 |
|
37 | 37 | ### 同版本冲突说再见 |
38 | 38 |
|
39 | 39 | 你是否正在处理多个项目,而所有这些项目都需要同一个二进制文件的不同版本?与其尝试在你的笔记本电脑上安装同一二进制文件的冲突版本,不如为每个项目创建一个隔离环境,并为每个项目使用你想要的任何版本。 |
40 | 40 |
|
41 | 41 | ### 瞬间将你的应用程序变成一个容器 |
42 | 42 |
|
43 | | -Devbox分析你的源代码并立即将其转化为可以部署到任何云中、并符合OCI标准的镜像。该镜像在速度、大小、安全和缓存方面都进行了优化......而且不需要编写`Dockerfile`。而且与[buildpacks](https://buildpacks.io/)不同的是,devbox处理起来更快。 |
| 43 | +Devbox 分析你的源代码并立即将其转化为可以部署到任何云中、并符合 OCI 标准的镜像。该镜像在速度、大小、安全和缓存方面都进行了优化......而且不需要编写`Dockerfile`。而且与[buildpacks](https://buildpacks.io/)不同的是,devbox 处理起来更快。 |
44 | 44 |
|
45 | 45 | ### 不要再重复声明依赖关系 |
46 | 46 |
|
47 | | -当你在笔记本电脑上开发时,以及当你把它打包成一个容器准备部署到云端时,你的应用程序往往需要相同的依赖关系集。Devbox的开发环境是同构的:这意味着我们可以把它们变成本地的Shell环境或云端的container,所有这些都不需要重复完成。 |
| 47 | +当你在笔记本电脑上开发时,以及当你把它打包成一个容器准备部署到云端时,你的应用程序往往需要相同的依赖关系集。Devbox 的开发环境是同构的:这意味着我们可以把它们变成本地的 Shell 环境或云端的 container,所有这些都不需要重复完成。 |
48 | 48 |
|
49 | | -## 安装Devbox |
| 49 | +## 安装 Devbox |
50 | 50 |
|
51 | | -除了安装Devbox本身之外,你还需要安装`nix`和`docker`,因为Devbox依赖于它们。 |
| 51 | +除了安装 Devbox 本身之外,你还需要安装`nix`和`docker`,因为 Devbox 依赖于它们。 |
52 | 52 |
|
53 | | -1. 安装 [Nix Package Manager](https://nixos.org/download.html)。(别担心,你不需要学习Nix。) |
| 53 | +1. 安装 [Nix Package Manager](https://nixos.org/download.html)。(别担心,你不需要学习 Nix。) |
54 | 54 |
|
55 | | -2. 安装[Docker Engine](https://docs.docker.com/engine/install/)或[Docker Desktop](https://www.docker.com/get-started/)。注意,只有当你想创建容器时才需要docker--如果没有它,shell功能也能工作。 |
| 55 | +2. 安装[Docker Engine](https://docs.docker.com/engine/install/)或[Docker Desktop](https://www.docker.com/get-started/)。注意,只有当你想创建容器时才需要 docker--如果没有它,shell 功能也能工作。 |
56 | 56 |
|
57 | | -3. 安装Devbox: |
| 57 | +3. 安装 Devbox: |
58 | 58 |
|
59 | | - ```sh |
60 | | - curl -fsSL https://get.jetify.com/devbox | bash |
61 | | - ``` |
| 59 | + ```sh |
| 60 | + curl -fsSL https://get.jetify.com/devbox | bash |
| 61 | + ``` |
62 | 62 |
|
63 | | -## 快速入门:快速又确定的shell |
| 63 | +## 快速入门:快速又确定的 shell |
64 | 64 |
|
65 | | -在这个快速入门中,我们将创建一个安装了特定工具的开发shell。这些工具只有在使用这个Devbox shell时才能使用,以确保我们不会污染你的机器。 |
| 65 | +在这个快速入门中,我们将创建一个安装了特定工具的开发 shell。这些工具只有在使用这个 Devbox shell 时才能使用,以确保我们不会污染你的机器。 |
66 | 66 |
|
67 | 67 | 1. 在一个新的空文件夹中打开一个终端。 |
68 | 68 |
|
69 | | -2. 初始化Devbox: |
| 69 | +2. 初始化 Devbox: |
| 70 | + |
| 71 | + ```bash |
| 72 | + devbox init |
| 73 | + ``` |
70 | 74 |
|
71 | | - ```bash |
72 | | - devbox init |
73 | | - ``` |
| 75 | + 这将在当前目录下创建一个`devbox.json`文件。你应该把它提交到源码控制里。 |
74 | 76 |
|
75 | | - 这将在当前目录下创建一个`devbox.json`文件。你应该把它提交到源码控制里。 |
| 77 | +3. 从[Nix Packages](https://search.nixos.org/packages)添加命令行工具。例如,要添加 Python 3.10: |
76 | 78 |
|
77 | | -3. 从[Nix Packages](https://search.nixos.org/packages)添加命令行工具。例如,要添加Python 3.10: |
| 79 | + ```bash |
| 80 | + devbox add python310 |
| 81 | + ``` |
78 | 82 |
|
79 | | - ```bash |
80 | | - devbox add python310 |
81 | | - ``` |
82 | 83 | 4. 你的`devbox.json`文件记录了你所添加的软件包,它现在应该看起来是这样的: |
83 | 84 |
|
84 | | - ```json |
85 | | - { |
86 | | - "packages": [ |
87 | | - "python310" |
88 | | - ] |
89 | | - } |
90 | | - ``` |
| 85 | + ```json |
| 86 | + { |
| 87 | + "packages": ["python310"] |
| 88 | + } |
| 89 | + ``` |
91 | 90 |
|
92 | | -5. 启动一个安装了这些工具的新shell: |
| 91 | +5. 启动一个安装了这些工具的新 shell: |
93 | 92 |
|
94 | | - ```bash |
95 | | - devbox shell |
96 | | - ``` |
| 93 | + ```bash |
| 94 | + devbox shell |
| 95 | + ``` |
97 | 96 |
|
98 | | - 你可以看出你是在Devbox shell中(而不是你的普通终端),因为shell的提示和目录已经改变。 |
| 97 | + 你可以看出你是在 Devbox shell 中(而不是你的普通终端),因为 shell 的提示和目录已经改变。 |
99 | 98 |
|
100 | 99 | 6. 使用你喜欢的工具。 |
101 | 100 |
|
102 | | - In this example we installed Python 3.10, so let’s use it. |
| 101 | + In this example we installed Python 3.10, so let’s use it. |
103 | 102 |
|
104 | | - ```bash |
105 | | - python --version |
106 | | - ``` |
| 103 | + ```bash |
| 104 | + python --version |
| 105 | + ``` |
107 | 106 |
|
108 | 107 | 7. 你的常规工具也是可用的,包括环境变量和配置设置。 |
109 | 108 |
|
110 | | - ```bash |
111 | | - git config --get user.name |
112 | | - ``` |
| 109 | + ```bash |
| 110 | + git config --get user.name |
| 111 | + ``` |
113 | 112 |
|
114 | | -8. 要退出Devbox shell并返回到你的常规shell: |
| 113 | +8. 要退出 Devbox shell 并返回到你的常规 shell: |
115 | 114 |
|
116 | | - ```bash |
117 | | - exit |
118 | | - ``` |
| 115 | + ```bash |
| 116 | + exit |
| 117 | + ``` |
119 | 118 |
|
120 | | -## 快速入门:迅速的Docker镜像 |
| 119 | +## 快速入门:迅速的 Docker 镜像 |
121 | 120 |
|
122 | | -Devbox使得将你的应用程序打包成一个符合OCI标准的容器镜像变得很容易。Devbox会分析你的代码,自动识别你的项目所需的正确工具链,并将其构建为一个docker镜像。 |
| 121 | +Devbox 使得将你的应用程序打包成一个符合 OCI 标准的容器镜像变得很容易。Devbox 会分析你的代码,自动识别你的项目所需的正确工具链,并将其构建为一个 docker 镜像。 |
123 | 122 |
|
124 | 123 | 1. 使用`devbox init`来初始化你的项目,如果还未初始化的话。 |
125 | 124 |
|
126 | 125 | 2. 构建镜像: |
127 | 126 |
|
128 | | - ```bash |
129 | | - devbox build |
130 | | - ``` |
| 127 | + ```bash |
| 128 | + devbox build |
| 129 | + ``` |
131 | 130 |
|
132 | | - 生成的镜像名叫 `devbox`. |
| 131 | + 生成的镜像名叫 `devbox`. |
133 | 132 |
|
134 | 133 | 3. 用一个更具体的名称来标记该镜像: |
135 | 134 |
|
136 | | - ```bash |
137 | | - docker tag devbox my-image:v0.1 |
138 | | - ``` |
| 135 | + ```bash |
| 136 | + docker tag devbox my-image:v0.1 |
| 137 | + ``` |
| 138 | + |
139 | 139 | ### 自动检测的语言 |
140 | | -Devbox目前支持检测以下两种语言: |
141 | 140 |
|
142 | | -- Go |
143 | | -- Python (Poetry) |
| 141 | +Devbox 目前支持检测以下两种语言: |
| 142 | + |
| 143 | +- Go |
| 144 | +- Python (Poetry) |
144 | 145 |
|
145 | | -想要支持更多的语言?[Ask for a new Language](https://github.com/jetify-com/devbox/issues) 或通过Pull Request贡献一个。 |
| 146 | +想要支持更多的语言?[Ask for a new Language](https://github.com/jetify-com/devbox/issues) 或通过 Pull Request 贡献一个。 |
146 | 147 |
|
147 | 148 | ## 额外命令 |
148 | 149 |
|
149 | 150 | `devbox help` - 用来查看所有的命令 |
150 | 151 |
|
151 | | -`devbox plan` - 用来查看Devbox在生成container时的配置与步骤 |
| 152 | +`devbox plan` - 用来查看 Devbox 在生成 container 时的配置与步骤 |
152 | 153 |
|
153 | 154 | ## 加入我们的开发者社区 |
154 | 155 |
|
155 | | -+ 通过加入[Jetify Discord Server](https://discord.gg/agbskCJXk2)来与我们聊天 - 我们有一个#devbox频道专门用于这个项目。 |
156 | | -+ 使用[Github Issues](https://github.com/jetify-com/devbox/issues)提交错误报告和功能请求。 |
157 | | -+ 在[Jetify’s Twitter](https://twitter.com/jetify_com)上关注我们的产品更新。 |
| 156 | +- 通过加入[Jetify Discord Server](https://discord.gg/jetify)来与我们聊天 - 我们有一个#devbox 频道专门用于这个项目。 |
| 157 | +- 使用[Github Issues](https://github.com/jetify-com/devbox/issues)提交错误报告和功能请求。 |
| 158 | +- 在[Jetify’s Twitter](https://twitter.com/jetify_com)上关注我们的产品更新。 |
158 | 159 |
|
159 | 160 | ## 相关工作 |
160 | 161 |
|
161 | | -感谢[Nix](https://nixos.org/)所提供的独立的shell。 |
| 162 | +感谢[Nix](https://nixos.org/)所提供的独立的 shell。 |
162 | 163 |
|
163 | 164 | ## License |
164 | 165 |
|
|
0 commit comments