• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Docker编译环境<a name="ZH-CN_TOPIC_0000001055701144"></a>
2
3## Docker环境介绍<a name="section107932281315"></a>
4
5OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下:
6
7-   独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。
8-   基于HPM的Docker环境:适用于使用HPM工具进行发行版编译的场景。
9
10**表 1**  Docker镜像介绍
11
12<a name="table11986917191214"></a>
13<table><thead align="left"><tr id="row149861417121215"><th class="cellrowborder" valign="top" width="15.831583158315832%" id="mcps1.2.6.1.1"><p id="p798611714124"><a name="p798611714124"></a><a name="p798611714124"></a>Docker环境</p>
14</th>
15<th class="cellrowborder" valign="top" width="13.97139713971397%" id="mcps1.2.6.1.2"><p id="p1698661751219"><a name="p1698661751219"></a><a name="p1698661751219"></a>系统类型</p>
16</th>
17<th class="cellrowborder" valign="top" width="18.61186118611861%" id="mcps1.2.6.1.3"><p id="p1798671761217"><a name="p1798671761217"></a><a name="p1798671761217"></a>运行平台</p>
18</th>
19<th class="cellrowborder" valign="top" width="35.8935893589359%" id="mcps1.2.6.1.4"><p id="p20526205414295"><a name="p20526205414295"></a><a name="p20526205414295"></a>Docker镜像仓库</p>
20</th>
21<th class="cellrowborder" valign="top" width="15.69156915691569%" id="mcps1.2.6.1.5"><p id="p1833001309"><a name="p1833001309"></a><a name="p1833001309"></a>标签</p>
22</th>
23</tr>
24</thead>
25<tbody><tr id="row1798661751216"><td class="cellrowborder" rowspan="2" align="center" valign="top" width="15.831583158315832%" headers="mcps1.2.6.1.1 "><p id="p1898631791213"><a name="p1898631791213"></a><a name="p1898631791213"></a>独立 Docker环境</p>
26</td>
27<td class="cellrowborder" valign="top" width="13.97139713971397%" headers="mcps1.2.6.1.2 "><p id="p1598617177128"><a name="p1598617177128"></a><a name="p1598617177128"></a>轻量和小型系统</p>
28</td>
29<td class="cellrowborder" valign="top" width="18.61186118611861%" headers="mcps1.2.6.1.3 "><p id="p898614178122"><a name="p898614178122"></a><a name="p898614178122"></a>Ubuntu/Windows</p>
30</td>
31<td class="cellrowborder" valign="top" width="35.8935893589359%" headers="mcps1.2.6.1.4 "><p id="p12667431305"><a name="p12667431305"></a><a name="p12667431305"></a>swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker</p>
32</td>
33<td class="cellrowborder" valign="top" width="15.69156915691569%" headers="mcps1.2.6.1.5 "><p id="p143320173017"><a name="p143320173017"></a><a name="p143320173017"></a>1.0.0</p>
34</td>
35</tr>
36<tr id="row998612174129"><td class="cellrowborder" valign="top" headers="mcps1.2.6.1.1 "><p id="p1998617172126"><a name="p1998617172126"></a><a name="p1998617172126"></a>标准系统</p>
37</td>
38<td class="cellrowborder" valign="top" headers="mcps1.2.6.1.2 "><p id="p1598641741215"><a name="p1598641741215"></a><a name="p1598641741215"></a>Ubuntu</p>
39</td>
40<td class="cellrowborder" valign="top" headers="mcps1.2.6.1.3 "><p id="p552616549297"><a name="p552616549297"></a><a name="p552616549297"></a>swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard</p>
41</td>
42<td class="cellrowborder" valign="top" headers="mcps1.2.6.1.4 "><p id="p1633303300"><a name="p1633303300"></a><a name="p1633303300"></a>1.0.0</p>
43</td>
44</tr>
45<tr id="row5986201731214"><td class="cellrowborder" align="center" valign="top" width="15.831583158315832%" headers="mcps1.2.6.1.1 "><p id="p136981216143"><a name="p136981216143"></a><a name="p136981216143"></a>HPM Docker环境</p>
46</td>
47<td class="cellrowborder" valign="top" width="13.97139713971397%" headers="mcps1.2.6.1.2 "><p id="p969831161416"><a name="p969831161416"></a><a name="p969831161416"></a>轻量和小型系统</p>
48</td>
49<td class="cellrowborder" valign="top" width="18.61186118611861%" headers="mcps1.2.6.1.3 "><p id="p18821161052214"><a name="p18821161052214"></a><a name="p18821161052214"></a>Ubuntu/Windows</p>
50</td>
51<td class="cellrowborder" valign="top" width="35.8935893589359%" headers="mcps1.2.6.1.4 "><p id="p1652616548294"><a name="p1652616548294"></a><a name="p1652616548294"></a>swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker</p>
52</td>
53<td class="cellrowborder" valign="top" width="15.69156915691569%" headers="mcps1.2.6.1.5 "><p id="p1433130173010"><a name="p1433130173010"></a><a name="p1433130173010"></a>0.0.3</p>
54</td>
55</tr>
56</tbody>
57</table>
58
59
60
61
62
63
64
65
66## 环境准备<a name="section7337134183512"></a>
67
68在使用docker环境前需要先完成以下操作:
69
701.  安装Docker,Docker安装请参考[官方指导](https://docs.docker.com/engine/install/)712.  获取OpenHarmony源码,请参考[获取源码](sourcecode-acquire.md)。
72
73    >![](../public_sys-resources/icon-note.gif) **说明:**
74    >HPM Docker环境无需单独获取源码。
75
76
77## 独立Docker环境<a name="section2858536103611"></a>
78
79OpenHarmony的Docker镜像托管在[HuaweiCloud SWR](https://console.huaweicloud.com/swr/?region=cn-south-1#/app/warehouse/warehouseMangeDetail/goldensir/openharmony-docker/openharmony-docker?type=ownImage)上。开发者可以通过该镜像在很大程度上简化编译前的环境配置。下文将介绍具体使用步骤。
80
81### 搭建Docker环境(轻量系统和小型系统)<a name="section319412277287"></a>
82
831.  获取Docker镜像。
84
85    ```
86    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
87    ```
88
892.  进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。
90
91    ubuntu下执行:
92
93    ```
94    docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
95    ```
96
97    windows下执行(假设源码目录为D:\\OpenHarmony):
98
99    ```
100    docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
101    ```
102
103
104### 编译源码-轻量系统类设备(轻量系统和小型系统)<a name="section631485163615"></a>
105
106通过如下编译脚本启动轻量系统类设备(参考内存≥128KB)和小型系统类设备(参考内存≥1MB)的编译。下文以Hi3516平台为例说明具体编译步骤。
107
108设置编译路径,选择当前路径。
109
110```
111hb set
112```
113
114**图 1**  设置编译界面<a name="fig7947145854013"></a>
115![](figure/设置编译界面.png "设置编译界面")
116
117>![](../public_sys-resources/icon-note.gif) **说明:**
118>当前开发板平台和编译界面的对应关系如下:
119>-   Hi3861:wifiiot\_hispark\_pegasus@hisilicon
120>-   Hi3516:ipcamera\_hispark\_taurus@hisilicon
121>-   Hi3518:ipcamera\_hispark\_aries@hisilicon
122
1231.  选择ipcamera\_hispark\_taurus@hisilicon并回车。
1242.  执行编译。
125
126    ```
127    hb build -f
128    ```
129
1303.  查看编译结果。
131
132    编译结果文件生成在out/hispark\_taurus/ipcamera\_hispark\_taurus目录下。
133
134
135### 搭建Docker环境(标准系统)<a name="section13585262391"></a>
136
1371.  获取Docker镜像。
138
139    ```
140    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
141    ```
142
1432.  进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。
144
145    ```
146    docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
147    ```
148
149
150### 编译源码(标准系统)<a name="section193711513406"></a>
151
152通过如下编译脚本启动标准系统类设备(参考内存≥128MB)的编译。
153
154```
155./build.sh --product-name {product_name} --ccache
156```
157
158\{product\_name\}为当前版本支持的平台。比如:Hi3516DV300和rk3568等。
159
160编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在 out/{device_name}/packages/phone/images/ 目录下。
161
162
163>![](../public_sys-resources/icon-note.gif) **说明:**
164>退出Docker执行exit命令即可。
165
166## 基于HPM的Docker环境<a name="section485713518337"></a>
167
168docker\_dist是一个[HPM](https://hpm.harmonyos.com/)系统中的模板组件,能够帮助用户快速初始化HPM工程,利用docker镜像来快速编译OpenHarmony发行版,在很大程度上简化了编译前的环境配置。开发者在配置好Ubuntu和[hpm-cli](../hpm-part/hpm-part-development.md)开发环境后,可以通过以下步骤来使用我们提供的Docker环境。
169
170### 搭建Docker环境<a name="section3295842510"></a>
171
1721.  初始化安装模板。在任意工作目录中执行以下命令。
173
174    ```
175    hpm init -t @ohos/docker_dist
176    ```
177
1782.  修改publishAs。
179
180    因为获取到的是模板类型的包,要把包的类型改为需要的类型。 在当前目录下打开bundle.json文件,把"publishAs"字段的值由"template"改为"distribution"。
181
182
183### 获取及编译源码<a name="section69141039143518"></a>
184
185执行编译。自动安装docker只能在Ubuntu环境下执行,如果其他环境,需要用户自行安装docker,然后拉取镜像,执行编译。
186
187-   **自动安装docker(Ubuntu环境)**
188
189    以下命令可以帮助用户自动安装docker, 拉取镜像,并且在容器中开始运行对应解决方案的拉取和编译。
190
191    **方式一:**
192
193    命令后接参数指定解决方案,格式如下:
194
195    ```
196    hpm run docker solution={product}
197    ```
198
199    \{product\}为需编译的解决方案,如:@ohos/hispark\_taurus、@ohos/hispark\_aries、@ohos/hispark\_pegasus。
200
201    **方式二:**
202
203    设置环境变量来选择解决方案,再执行编译命令。
204
205    1.  选择解决方案。
206
207        ```
208        export solution={product}
209        ```
210
211        \{product\}为需编译的解决方案,如:@ohos/hispark\_taurus、@ohos/hispark\_aries、@ohos/hispark\_pegasus。
212
213    2.  获取源码及执行编译。
214
215        ```
216        hpm run docker
217        ```
218
219    以上两种方式以@ohos/hispark\_taurus为例,执行成功结果如下:
220
221    ```
222    ......
223    ohos ipcamera_hispark_taurus build success!
224    @ohos/hispark_taurus: distribution building completed.
225    ```
226
227
228-   **自行安装docker(非Ubuntu环境)**
229
230    自行安装docker相关操作如下:
231
232    ```
233    # 拉取镜像
234    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3# linux环境下的编译
235    hpm run distWithDocker solution={product}
236    # windows下的编译,需要配置gitbash
237    hpm config set shellPath "gitbash路径"
238    hpm run distWithDocker solution={product}
239    ```