网站建设过程中应该注意的事项有,品牌创意设计,百度外推排名代做,搜索引擎技术基础天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物。 每个人都有惰性#xff0c;但不断学习是好好生活的根本#xff0c;共勉#xff01; 文章均为学习整理笔记#xff0c;分享记录为主#xff0c;如有错误请指正#xff0c;共同学习进步。… 天行健君子以自强不息地势坤君子以厚德载物。 每个人都有惰性但不断学习是好好生活的根本共勉 文章均为学习整理笔记分享记录为主如有错误请指正共同学习进步。 文章目录 一、Dockerfile介绍二、Dockerfile常用参数三、配置Dockerfile四、使用Dockerfile1. 构建镜像命令语法2. 举例 K8S自动化部署JAVA项目Gitlab CI/CD请参考文章K8S部署Java项目Gitlab CI/CD自动化部署
一、Dockerfile介绍
官网参考文档 https://docs.docker.com/engine/reference/builder/ 参数截图
二、Dockerfile常用参数
Dockerfile文件中的关键字不区分大小写大写小写都可以 以下为常用参数关键字
关键字描述FROM指定基础镜像 如FROM docker:latestMAINTAINER指定文件作者 如李白ENV配置环境变量 如ENV JAVA_HOME/root/local/java/jdk1.8-.0.121ARG用于定义变量后面引用 如JAR_FILEtarget/*.jar 后面可用${JAR_FILE}方式引用WORKDIR工作目录即后续RUN、ADD等命令执行位置的路径COPY拷贝本地文件到指定目录 如COPY ./tomcat-8.0 /root/tomcat不支持压缩文件自动解压文件只会被复制为普通文件ADD与COPY相似但除了复制本地文件和目录外还有几点高级功能1会在将压缩文件复制到目标目录前自动解压2还支持使用url作为源路径从网络下载文件并复制到容器中3在构建上下文中添加的文件可以是一个url他会自动下载并复制到容器中tips建议用COPY更简单直接RUN执行linux的shell命令 如RUN mkdir -p /root/projectEXPOSE指定容器运行时坚挺的端口镜像使用者可看到 如EXPOSE 8800ENTRYPOINT镜像中应用的启动命令容器运行时调用 如ENTRYPOINT java -jar app.jar
三、配置Dockerfile
配置举例 以java项目为例使用Dockerfile文件打包并构建镜像
#关键字和值之间可以是空格 也可以是等号
#指定基础镜像以此镜像为基础构建
FROM openjdk:8-jdk-alpine#作者
MAINTAINER hs#设置环境变量
#JAVA_HOME环境变量定义即配置jdk安装目录路径需是jdk文件全路径名
ENV JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-4.0.3.al8.x86_64
#MAVEN环境变量定义即maven安装的位置需是maven全路径名
ENV MAVEN_HOME/usr/share/maven
#配置环境变量
ENV PATH$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#指定容器的时区
ENV TZAsia/Shanghai
#应用参数
#ENV ARGS
#target是jar包默认的位置但是我们在CICD打包阶段已经将jar复制到了/root/jar/k8s-project目录中
#ARG JAR_FILEtarget/*.jar#创建工作目录此目录在CICD打包阶段已经创建
#RUN mkdir -p /root/jar/k8s-project#设置工作目录后续命令默认执行位置为该路径不设置的话后续会默认当前路径为工作路径
WORKDIR /root/jar/k8s-project#复制文件到镜像中将本地文件或目录复制到镜像指定位置
#COPY app.jar /root/jar/k8s-project/app.jar
#COPY ${JAR_FILE} /root/jar/k8s-project/app.jar#将app.jar添加到指定文件夹中并自动解压缩与COPY类似二选一即可
#同时因为我们已经在.gitlab-ci.yml文件中的打包阶段执行了将jar复制到/root/jar/k8s-project目录的操作故本文件中省略复制COPY或ADD命令
#ADD target/app.jar /root/jar/k8s-project/app.jar
#ADD ${JAR_FILE} /root/jar/k8s-project/app.jar#时区配置可省略
#RUN ln -snf /usr/share/zonginfo/$TZ /etc/localtime echo $TZ /etc/timezone#容器入口该命令应该是将每个字符串组合起来nohub java -jar app.jar
ENTRYPOINT [nohup,java,-jar,app.jar]#声明要监听的端口暴露端口容器内部的端口这里暂时不用
#EXPOSE 8080四、使用Dockerfile
在docker中可直接构建镜像操作如下 准备一个项目和一个Dockerfile文件
1. 构建镜像命令语法
打标签注意最后一个.表示在当前位置执行如果Dockerfile文件不在当前目录中需要使用-f指定Dockerfile文件位置
docker build -t 镜像名:镜像标签 .或指定Dockerfile位置构建
docker build -t 镜像名:镜像标签 . -f /root/Dockerfile推送镜像
docker push 镜像名:镜像标签2. 举例
镜像名为springboot 镜像标签为v20240204
docker build -t springboot:v20240204 .docker push springboot:v20240204执行后即可生成镜像 后续可通过该镜像部署项目如docker run命令部署或者k8s的yaml文件部署
当配合gitlab ci/cd的.gitlab-ci.yml文件进行项目自动化部署时Dockerfile文件最好与.gitlab-ci.yml一样存放在项目根目录 详情可参考.gitlab-ci.yml文件参数配置和使用 感谢阅读祝君暴富