1# Docker编译环境 2 3 4## Docker环境介绍 5 6OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。两种Docker环境及适用场景如下: 7 8- 独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。 9 10- 基于HPM的Docker环境:适用于使用HPM工具进行发行版编译的场景。 11 12**表1** Docker镜像介绍 13 14| 系统类型 | 运行平台 | Docker镜像仓库 | 标签 | 15| -------- | -------- | -------- | -------- | 16| 标准系统(独立Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard | 3.2 | 17| 小型系统(独立Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small | 3.2 | 18| 轻量系统(独立Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini | 3.2 | 19| 轻量和小型系统(HPM Docker环境) | Ubuntu/Windows | swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker | 0.0.3 | 20 21 22## 环境准备 23 24在使用Docker环境前,需要准备源码和一些基本工具,以Ubuntu为例,您需要执行以下步骤: 25 261. 安装Docker 27 - 在Ubuntu中,可以使用下面的命令来安装Docker: 28 ``` 29 sudo apt install docker.io 30 ``` 31 - 其他系统的Docker安装请参考[Docker指导](https://docs.docker.com/engine/install/)。 32 332. 获取OpenHarmony源码 34 35 请参考[获取源码](sourcecode-acquire.md)。 36 >  **说明:**<br> 37 > HPM Docker环境无需单独获取源码。 38 393. 获取使用权限 40 41 为了能够使用Docker,请使用具备root权限的用户,或已被授予Docker使用权限的用户进行后续操作。在Ubuntu系统中,通常可以通过在命令前加sudo来获取root权限。在Windows系统中,您可能需要在管理员模式下运行cmd或PowerShell。 42 43## 独立Docker环境 44 45Docker镜像是包含了运行环境和应用程序的轻量级、可执行的软件包,OpenHarmony的Docker镜像托管在HuaweiCloud SWR上。开发者可以通过该镜像在很大程度上简化编译前的环境配置。这一部分将引导您如何在Docker环境中配置和使用OpenHarmony,下文将介绍具体使用步骤。 46 47### 搭建Docker环境(轻量系统和小型系统) 48 491. 获取Docker镜像 50 51 获取小型系统镜像的命令为: 52 53 ``` 54 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2 55 ``` 56 获取轻量系统镜像的命令为: 57 ``` 58 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2 59 ``` 60 612. 进入Docker构建环境 62 63 在获取了镜像之后,您需要创建一个新的Docker容器,并进入该容器中。进入OpenHarmony源码根目录执行如下命令,从而进入Docker构建环境。 64 65 - Ubuntu系统 66 67 ``` 68 # 进入小型系统Docker构建环境 69 docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2 70 71 # 进入轻量系统Docker构建环境 72 docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2 73 ``` 74 75 - Windows系统(假设源码目录为`D:\OpenHarmony`): 76 77 ``` 78 # 进入小型系统Docker构建环境 79 docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2 80 81 # 进入轻量系统Docker构建环境 82 docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2 83 ``` 84 85 >  **说明:**<br> 86 > `docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2` 这个命令的含义是,创建并运行一个新的OpenHarmony的Docker容器,这个容器运行在交互模式下,并且将当前目录映射到容器的/home/openharmony目录。 87 88### 编译源码(轻量系统和小型系统) 89 901. 启动编译脚本 91 92 执行`docker run`命令进入Docker容器后(此时位于`/home/openharmony`路径下),您可以通过如下编译脚本启动轻量系统类设备(参考内存≥128KiB)和小型系统类设备(参考内存≥1MiB)的编译。 93 94 ``` 95 python3 build.py -p {product_name}@{company} 96 ``` 97 98 其中,`{product_name}`为当前版本支持的平台,`{company}`为`{product_name}`对应的公司名。 99 100 举个例子,如果您要编译的产品为`hisilicon`下的`ipcamera_hispark_taurus`,您可以输入以下命令来启动编译: 101 102 ``` 103 python3 build.py -p ipcamera_hispark_taurus@hisilicon 104 ``` 105 106 同样,如果您要编译的产品是`ohemu`下的`qemu_small_system_demo`,那么您可以输入以下命令来启动编译: 107 108 ``` 109 python3 build.py -p qemu_small_system_demo@ohemu 110 ``` 111 1122. 查看编译结果 113 114 在编译结束后,编译所生成的文件都会被存放在`out/{device_name}/`目录下,结果镜像输出在`out/{device_name}/packages/phone/images/`目录下。 115 116>  **说明:**<br> 117> 如需退出Docker,执行`exit`命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。 118 119### 搭建Docker环境(标准系统) 120 1211. 获取Docker镜像 122 123 在搭建标准系统的Docker环境前,我们也需要先获取对应的Docker镜像。具体的命令如下: 124 125 ``` 126 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2 127 ``` 128 1292. 进入Docker构建环境 130 131 与之前的步骤相同,我们需要创建一个新的Docker容器,并进入该容器中。进入openharmony源码根目录执行如下命令,从而进入Docker构建环境。 132 133 - Ubuntu系统 134 135 ``` 136 docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2 137 ``` 138 139 - Windows系统(假设源码目录为`D:\OpenHarmony`) 140 141 ``` 142 docker run -it -v D:\OpenHarmony:/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2 143 ``` 144 145### 编译源码(标准系统) 146 1471. 启动编译脚本 148 149 执行`docker run`命令进入Docker容器后(此时位于`/home/openharmony`路径下),您可以通过如下编译脚本启动标准系统类设备(参考内存≥128MB)的编译。 150 151 ``` 152 ./build.sh --product-name {product_name} --ccache 153 ``` 154 155 `{product_name}`为当前版本支持的平台。例如,您要编译的产品是`rk3568`,那么您可以输入以下命令来启动编译: 156 157 ``` 158 ./build.sh --product-name rk3568 --ccache 159 ``` 160 1612. 查看编译结果\ 162 编译所生成的文件都归档在`out/{device_name}/`目录下,结果镜像输出在`out/{device_name}/packages/phone/images/`目录下。 163 164>  **说明:**<br> 165> 如需退出Docker,执行`exit`命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。 166 167 168## 基于HPM的Docker环境 169 170docker_dist是一个[HPM](https://hpm.harmonyos.com/)系统中的模板组件,能够帮助用户快速初始化HPM工程,利用docker镜像来快速编译OpenHarmony发行版,在很大程度上简化了编译前的环境配置。开发者在配置好Ubuntu和[hpm-cli](https://device.harmonyos.com/cn/docs/documentation/guide/hpm-part-development-install-0000001178291102)开发环境后,可以通过以下步骤来使用我们提供的Docker环境。 171 172 173### 搭建Docker环境 174 1751. 初始化安装模板 176 177 在任意工作目录中执行以下命令 178 179 ``` 180 hpm init -t @ohos/docker_dist 181 ``` 182 1832. 修改publishAs 184 185 因为获取到的是模板类型的包,要把包的类型改为需要的类型。 在当前目录下打开bundle.json文件,把"publishAs"字段的值由"template"改为"distribution"。 186 187 188### 获取及编译源码 189 190执行编译。自动安装docker只能在Ubuntu环境下执行,如果其他环境,需要用户自行安装docker,然后拉取镜像,执行编译。 191 192- 自动安装docker(Ubuntu环境)<br> 193 以下命令可以帮助用户自动安装docker, 拉取镜像,并且在容器中开始运行对应解决方案的拉取和编译。 194 195 方式一: 196 197 命令后接参数指定解决方案,格式如下: 198 199 200 ``` 201 hpm run docker solution={product} 202 ``` 203 204 {product}为需编译的解决方案,如:\@ohos/hispark_taurus、\@ohos/hispark_aries、\@ohos/hispark_pegasus。 205 206 方式二: 207 208 设置环境变量来选择解决方案,再执行编译命令。 209 210 1. 选择解决方案。 211 212 ``` 213 export solution={product} 214 ``` 215 216 {product}为需编译的解决方案,如:\@ohos/hispark_taurus、\@ohos/hispark_aries、\@ohos/hispark_pegasus。 217 2. 获取源码及执行编译。 218 219 ``` 220 hpm run docker 221 ``` 222 223 以上两种方式以\@ohos/hispark_taurus为例,执行成功结果如下: 224 225 ``` 226 ...... 227 ohos ipcamera_hispark_taurus build success! 228 @ohos/hispark_taurus: distribution building completed. 229 ``` 230 231- 自行安装docker(非Ubuntu环境)<br> 232 自行安装docker相关操作如下: 233 234 235 ``` 236 # 拉取镜像 237 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3# linux环境下的编译 238 hpm run distWithDocker solution={product} 239 # windows下的编译,需要配置gitbash 240 hpm config set shellPath "gitbash路径" 241 hpm run distWithDocker solution={product} 242 ``` 243