Fork me on GitHub

java-SpringBoot配置Dockerfile,打包镜像全过程以及Dockerfile基础命令介绍

Docker实战篇——java-SpringBoot配置Dockerfile,打包镜像全过程
  1. Dockerfile构成

    :注释

    Dockerfile由4部分组成:

    ​ 1) 基础镜像信息:From :

    ​ 2)维护者信息:LABEL maintainer="1091173065@qq.com"

    ​ 3)镜像操作指令:RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

    ​ 4)容器启动指令:CMD ["--datadir", "/var/lib/mysql-no-volume"]

    注意:基础镜像信息可以写多个FROM指令来构建复杂的镜像

  2. Dockerfile指令

    • FROM:指定制作的镜像继承自那个镜像

      格式:

      FROM <image>
      FROM <image>:<tag>
      FROM <image>:<digest> 
      
    • LABEL maintainer:用来指定维护者信息

      格式:LABEL maintainer="1091173065@qq.com"

    • RUN:执行shell命令

      格式:

      1. RUN <command> #后边直接跟shell命令
      2. RUN ["executable", "param1", "param2"]#类似于函数调用。
      
    • EXPOSE:暴露容器中的端口号,也可通过“docker run -p”进行映射。

      格式:EXPOSE [......]

    • CMD:只存在一个,

      1. CMD ["executable","param1","param2"]
      2. CMD ["param1","param2"]
      3. CMD command param1 param2
      
    • ENTRYPOINT:Dockerfile只能存在一个该指令,当指定多个时,最后一个有效。

      1. ENTRYPOINT ["executable", "param1", "param2"]
      2. ENTRYPOINT command param1 param2
      
    • VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库或需要永久保存的数据。

      docke run -v $HostPath:$ContainerPath #常用指令
      VOLUME ["/data"]
      
    • ENV:指定环境变量,会被后续RUN指令使用,并在容器运行时保持。

      1. ENV <key> <value> #1个环境
      2. ENV <key>=<value> ...#多个环境
      
    • ADD:复制命令,把文件复制到镜像中。

      1. ADD <src>... <dest>
      2. ADD ["<src>",... "<dest>"]
      
    • COPY:复制本地的src(为Dockerfile所在目录的相对路径)到容器中的dest。当使用本地目录为源目录是推荐使用COPY。

      1. COPY <src>... <dest>
      2. COPY ["<src>",... "<dest>"]
      
  3. java-SpringBoot配置Dockerfile,打包镜像全过程

    1、Spring项目打包:IDEA选择右侧的【Maven】-【projectName】-【lifecycle】-【package】,打包好的jar将存储在target下xxxxx.jar
    2、编写Dockerfile

    # 该镜像需要依赖的基础镜像
    FROM openjdk:8
    # 指定维护者名称
    MAINTAINER hcx 1091173065@qq.com
    # 将targer目录下的jar包复制到docker容器/home/springboot目录下面目录下面
    ADD ./target/core242-0.0.1-SNAPSHOT.jar /home/springboot/core242-0.0.1-SNAPSHOT.jar
    # 声明服务运行在8080端口
    EXPOSE 8080
    # 执行命令
    CMD ["java","-jar","/home/springboot/core242-0.0.1-SNAPSHOT.jar"]
    
    

    3、将项目上传至服务器,进行docker build

    docker build -t containerName(自定义):tag(自定义) .
    #注意最后的 . 一定要有
    #完成构建后可以使用命令dokcer images查看build完的镜像
    

    4、启动构建完成的镜像

    docker run -d -p 8080:8080 --name customName containerName:tag
    #启动后可以使用docker ps -a查看容器状态,是否能够正常使用,如果未正常启动就需要自行检查配置的过程中是否出现失误,例如Dockerfile中的CMD或者ADD的文件路径是否正确等。
    

posted @ 2021-09-30 14:26  壶小旭  阅读(2265)  评论(0编辑  收藏  举报