Docker file 语法笔记

Dockerfile语法规则

INSTRUCTION argument,命令不区分大小写,但约定为全部大写;必须以FROM命令开始,命令出现的顺序就是被执行的顺序

  • FROM:指定镜像基于哪个基础镜像创建,后续命令会基于该基础镜像。多次使用表示会创建多个镜像

               FROM <image name>

  • MAINTAINER:设置该镜像的作者

               MAINTAINER <author name>

  • RUN:执行的shell命令,该命令会在新创建的镜像上添加新的层面。

               RUN  <command> 如:cd target && tar -zxvf datastudio.tar.gz && chmod +x datastudio/bin/run-k8s.sh

  • ADD:复制文件命令。参数:source 和 destination,destination 是容器内的路径。source 可以是 URL 或者是启动配置上下文中的一个文件

               ADD  <source>  <destination>

  • CMD:容器默认的执行命令。Dockerfile只允许使用一次CMD命令。多个CMD会抵消之前所有的命令,只有最后一个命令生效

               CMD ["executable","param1","param2"] 或 CMD ["param1","param2"]

  • EXPOSE:指定容器在运行时监听的端口。语法如下:

               EXPOSE <port>

  • ENTRYPOINT:配置给容器的可执行命令,类似于CMD,只允许一个ENTRYPOINT,多个只执行最后一个

               ENTRYPOINT ["executable", "param1","param2"]

  • WORKDIR:指定RUN、CMD与ENTRYPOINT 命令的工作目录

               WORKDIR  /path/to/workdir

  • ENV:设置环境变量。键值对形式

               ENV <key> <value>

  • USER:给镜像运行时设置一个UID

               USER <uid>

  • VOLUME:授权访问从容器内到主机上的目录

               VOLUME ["/data"]

一个实例:

FROM af.xxx.com.cn/docker-ssrd/jdk/jdk8 AS stage-unzip
LABEL author="zhangsan@xxx.com.cn"

# 设置环境变量和容器的 Work 目录
ENV APP_HOME /app
ENV APP_TMP /app-tmp
WORKDIR $APP_HOME
# 复制代码和启动脚本

COPY ./target/*.zip    ${APP_TMP}/
RUN unzip ${APP_TMP}/*.zip -d ${APP_HOME}/

FROM af.xxx.com.cn/docker-ssrd/jdk/jdk8
ENV APP_HOME /app
WORKDIR $APP_HOME

COPY --from=stage-unzip app/ ${APP_HOME}
# 设定镜像的启动脚本
ENTRYPOINT [ "sh","/app/bin/loghub/bin/run-k8s.sh" ]

 

上一篇:DDD专题案例二《领域层决策规则树服务设计》


下一篇:【Hadoop】3.3.1版本部署