从cvat的Dockerfile学习docker与linux命令

  1. ENV, ARG分别指定镜像构建过程中和容器内的变量
ARG USER  # USER变脸以及下面的DJANGO_CONFIGURATION均在构建镜像过程中有效,构建完成后以及容器内均无效
ARG DJANGO_CONFIGURATION
ENV DJANGO_CONFIGURATION=${DJANGO_CONFIGURATION}  # 在镜像构建后,容器启动后依然有效,可覆盖
  1. wget: linux下载工具, -q不输出信息, -O将文档写入file
    echo: 输出字符串到屏幕
    tee: 将输出保存至指定文件
    DEBIAN_FORNTEND: 环境变量,告知操作系统如何获取用户输入,设置为’noninteractive’时表示不需要用户输入。非交互模式在构建镜像时很快,但不要同环境变量覆盖,以避免影响交互。
ARG WITH_TESTS
RUN if [ "$WITH_TESTS" = "yes" ]; then \
        wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \  # 下载谷歌软件公钥,用于验证之后的软件
        echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list && \  # tee将输出结果保存至apt源
        wget -qO- https://deb.nodesource.com/setup_9.x | bash - && \  # 下载nodejs
        apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get install -yq \  # 非交互模式安装
            google-chrome-stable \
            nodejs && \
        rm -rf /var/lib/apt/lists/*; \
        mkdir tests && cd tests && npm install \
            eslint \
            eslint-detailed-reporter \
            karma \
            karma-chrome-launcher \
            karma-coveralls \
            karma-coverage \
            karma-junit-reporter \
            karma-qunit \
            qunit; \
        echo "export PATH=~/tests/node_modules/.bin:${PATH}" >> ~/.bashrc; \
    fi

你可能感兴趣的:(Dockerfile,Ubuntu)