# 本文件是基于现有镜像将商用发布件和用户所开发的二进制进行打包生成新镜像的制作方式
# 本文件前提是保证已有基础镜像（如kbox），在基础镜像的基础上将指令流云手机相关的二进制包等文件放入基础镜像中重新使用
# docker制作新的镜像，方便用户使用。

# ARG是定义参数名称
# FROM是指定基础镜像
# MAINTAINER是作者名
ARG ORIGIN_IMAGE
FROM ${ORIGIN_IMAGE}
MAINTAINER author

# 本部分是实现将商用发布包实现方式，请用户基于以下方式配置
# 操作步骤：
# （1）建立一个存放商用发布包（CloudPhoneInstructionEngine.tar.gz）instructionEngine目录（本文以此目录作为实例，
# 用户可自行设置目录），并将本地目录中的文件拷贝到docker容器对应instructionImage目录（本文以此目录作为实例，用户可
# 自行设置目录）中。（22-23行）
# （2）修改文件的执行权限和所属用户及所属组。（39-40行）
# （3）将docker容器中的临时文件夹中的文件拷贝到对应的执行目录。（41-42行）
# （4）删除在docker容器中创建的临时文件夹，避免无效文件夹。（43行）
# 注意：因运行RUN一次就会导致创建一层镜像，容易产生非常臃肿、非常多层的镜像，不仅仅增加构建部署时间，也容易出错，
# 所以将商用部分和用户自研部分整合在一起，请根据对应的行进行相应修改。
COPY ./instructionEngine/vendor /instructionImage/vendor
COPY ./instructionEngine/system /instructionImage/system

# 本部分是用户自己基于商用发布包服务端开发的用户自研服务端包，请用户基于以下方式配置
# 操作步骤：
# （1）建立一个存放自研服务端发布包instructionEngineDemo目录（本文以此目录作为实例，用户可自行设置目录），并将本地目录中的文件
# 拷贝到docker容器对应instructionImage目录（本文以此目录作为实例，用户可自行设置目录）中。（34-36行）
# （2）修改文件的执行权限和所属用户及所属组。（44-51行）
# （3）将docker容器中的临时文件夹中的文件拷贝到对应的执行目录。（52-54行）
# （4）删除在docker容器中创建的临时文件夹，避免无效文件夹。（55行）
# 注意：因运行RUN一次就会导致创建一层镜像，容易产生非常臃肿、非常多层的镜像，不仅仅增加构建部署时间，也容易出错，
# 所以将商用部分和用户自研部分整合在一起，请根据对应的行进行相应修改。
COPY ./instructionEngineDemo/vendor /instructionImageDemo/vendor
COPY ./instructionEngineDemo/system /instructionImageDemo/system
COPY ./instructionEngineDemo/init.goldfish.rc /instructionImageDemo

# RUN是整合商用发布包和用户自研服务端包操作的shell命令
RUN chmod -R 755 instructionImage \
    && chown -R root:root instructionImage \
    && cp -pR instructionImage/vendor/* /system/vendor \
    && cp -pR instructionImage/system/* /system \
    && rm -rf instructionImage \
    && chmod -R 755 instructionImageDemo \
    && chmod -R 444 instructionImageDemo/vendor/etc/init/init.instructionengine.rc \
    && chmod -R 444 instructionImageDemo/vendor/etc/init/VmiAgentAndroidP.rc \
    && chmod -R 444 instructionImageDemo/vendor/etc/init/vendor.huawei.vmi@1.0-service.rc \
    && chmod -R 444 instructionImageDemo/system/etc/init/init.vmitouch.rc \
    && chmod -R 444 instructionImageDemo/init.goldfish.rc \
    && chown -R root:root instructionImageDemo \
    && cp -pR instructionImageDemo/vendor/* /system/vendor \
    && cp -pR instructionImageDemo/system/* /system \
    && cp -pR instructionImageDemo/init.goldfish.rc / \
    && rm -rf instructionImageDemo