- ENV, ARG分别指定镜像构建过程中和容器内的变量
ARG USER # USER变脸以及下面的DJANGO_CONFIGURATION均在构建镜像过程中有效,构建完成后以及容器内均无效
ARG DJANGO_CONFIGURATION
ENV DJANGO_CONFIGURATION=${DJANGO_CONFIGURATION} # 在镜像构建后,容器启动后依然有效,可覆盖
- 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