DockerFile介绍

DockeFile是用来构建docker镜像的描述文件,命令参数的脚本。

构建步骤

1、编写一个 dockerfile 文件

2、docker build 构建成为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像

DockerFile构建过程

基础知识:

1、每个保留关键字(指令)都是必须是大写字母

2、执行从上到下顺序执行

3、#表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交!

image

Docker指令说明

image

FROM                         # 基础镜镜像,一切从这里开始构建

MAINTAINER                   # 镜像是谁写的,姓名+邮箱

RUN                          # 镜像构建的时候需要运行的命令

ADD                          # 步骤: tomcat镜像,这个tomcat压缩包! 添加内容

WORKDIR                      # 镜像的工作目录

VOLUME                       # 挂载的目录

EXPOSE                       # 保留端口配置

CMD                          # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT                   # 指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD                      # 当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD 的指令。触发指令。

COPY                         # 类似ADD ,将我们文件拷贝到镜像中

ENV                          # 构建的时候设置环境变量 !

image

CMD和ENTRYPOINT 区别
cmd执行的命令不可以被追加,以第一个为准,entrypoint执行的命令可以追加命令

DockerFile实例

########### 以下以Java生态springboot应用为例 ############

# 设置基础镜像

FROM  artifacthub.XXX.work/idp-hub/uniontechos-server-20-1050u2a-amd64:2.0.2 as builder

#非root用户启动需要指定用户和组的ID,方便在initContainers里面进行处理

ARG user=ahyth

ARG group=appuser

ARG uid=1000

ARG gid=1000

#根据maven插件传参而来,为避免忘记传参报错,此处设置默认值demo

ARG APP_NAME

ENV APP_NAME=${APP_NAME}

#新建ahyth普通用户并切换为ahyth

#RUN bash -c 'groupadd -r appuser && useradd -r -g appuser ahyth'

RUN groupadd -r $group -g $gid && useradd -r -g $group -u $uid $user


ADD ${APP_CONTEXT_PATH}target/${APP_NAME}-package.tar.gz  /idp/service


RUN        mkdir -p /idp/logs/XXX


# 设置工作目录

ENV WORK_PATH=/idp/service/${APP_NAME} \

    CONFIG_PATH=/idp/service/${APP_NAME}/config \

    DATA_PATH=/idp/service/${APP_NAME}/data \

    SCRIPT_PATH=/idp/service/${APP_NAME}/bin \

    LOG_PATH=/idp/logs/yth-dm-directory-catalog-web \

    JAR_NAME=${APP_NAME} \

    LAUNCHER_OPTS="-Djavax.net.ssl.trustStore=/idp/public/jdk-17.0.2/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=ahythidp" \

    JAVA_OPTS="-server"

ENV JAVA_OPT="-Dlog.path=$LOG_PATH -Dlogging.config=$CONFIG_PATH/logback-spring.xml -Dspring.config.location=$CONFIG_PATH/bootstrap.yml "


# 创建及设置工作目录

WORKDIR $WORK_PATH

RUN chown -R $user:$group /idp && chmod -R 755 /idp

RUN chown -R $user:$group /home && chmod -R 755 /home

USER $user 

# 容器启动时的默认命令
ENTRYPOINT [ "/bin/bash", "-c", "java -jar $JAVA_OPT $JAVA_OPTS $JAR_NAME.jar $LAUNCHER_OPTS " ]
posted on 2024-05-22 10:51  今晚煮鸡蛋  阅读(10)  评论(0编辑  收藏  举报