概述
docker-lineage-cicd启动后会自动同步代码并编译,需要指定的参数也比较多,于是考虑制作自己的Docker
镜像,用于编译Lineage 18.1
。
步骤
Dockerfile
参考docker-lineage-cicd/Dockerfile
仅保留source
和ccache
两个目录映射,精简不必要的依赖,替换cron
为vim
,使用TUNA
的repo
,最后执行entrypoint
设置的脚本
docker_entrypoint.sh
设置ccache
大小和git
帐号,最后进入bash
build
1 | docker build --network=host \ |
为使用本地的http代理安装依赖,网络选择host
模式
run
1 | export ANDROID_VOL=/media/xhy/a5d37cc9-d3a3-43c8-909d-178d70a6598c/Android |
push
可以使用VSCode
的Docker
插件,将镜像上传到Docker Hub
遇到的问题
build 卡在 tzdata Geographic area:
在Dockerfile
中设置环境变量:
1 | ENV DEBIAN_FRONTEND=noninteractive |
docker_entrypoint.sh Permission denied
给脚本增加可执行权限,重新build
编译时permission denied
启动容器时增加--privileged
docker_entrypoint.sh执行后退出
原因:未运行前台应用,容器自动关闭
可增加-d
参数启动容器
或在docker_entrypoint.sh
脚本末尾增加进入Shell
的命令
1 | args="$@" |
参考
How to fix ‘Configuring tzdata’ interactive input when building Docker images