springboot程序制作docker镜像部署

发布时间:2023年12月25日

前置知识:Dockerfile是什么

Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含了一系列的指令和配置,描述了如何组装一个完整的容器环境。通过 Dockerfile,开发者可以定义容器的基础操作系统、软件包安装、环境变量、启动命令等方面的设置,最终形成一个可重复构建和部署的容器镜像。

Dockerfile 常用的指令及其作用:

  1. FROM: 指定基础镜像,定义了构建过程的起点。

    FROM ubuntu:20.04
    
  2. LABEL: 添加元数据,提供关于镜像的信息。

    LABEL maintainer="your-name"
    
  3. RUN: 在镜像中运行命令,用于安装软件包、更新系统等。

    RUN apt-get update && apt-get install -y curl
    
  4. WORKDIR: 设置工作目录,指定后续命令的运行路径。

    WORKDIR /app
    
  5. COPY/ADD: 复制文件或目录到容器中。

    COPY ./src /app
    
  6. ENV: 设置环境变量。

    ENV PATH="/usr/local/bin:${PATH}" \
        JAVA_HOME="/usr/local/java"
    
  7. EXPOSE: 暴露容器运行时的端口。

    EXPOSE 8080
    
  8. CMD: 容器启动时执行的默认命令,可以被覆盖。

    CMD ["npm", "start"]
    
  9. ENTRYPOINT: 容器启动时执行的命令,与 CMD 结合使用,可接受命令行参数。

    ENTRYPOINT ["java", "-jar", "app.jar"]
    CMD ["--server.port=8080"]
    
  10. VOLUME: 创建挂载点,用于持久化存储。

    VOLUME /data
    
  11. USER: 指定运行容器时的用户名或 UID。

    USER appuser
    

Docker 根据 Dockerfile 中的指令逐步构建镜像,每个指令都会创建一个新的镜像层。这样的分层设计使得镜像的复用、缓存和传输更加高效。通过 Dockerfile,开发者可以定义容器的构建规则,实现可移植、可复制的容器环境。

制作镜像的流程是什么

在项目中创建Dockerfile文件

在这里插入图片描述
以这个项目为例,Dockerfile创建的位置就是在项目的根目录下,和pom.xml文件同级。

Dockerfile文件内容需要什么

  1. 需要java环境,这里选择的就是java8
  2. 设置你项目在镜像里的工作路径,也就是你程序存放的路径
  3. 将你的程序复制到镜像内部
  4. 挂载配置文件和日志到宿主机
  5. 启动容器时就要启动你的程序,所以要设置默认启动命令
#基于java8镜像
FROM java:8
# 设置工作目录
WORKDIR /app
#复制jar包和配置文件到镜像内部
COPY es-1.0.0.jar /app/es.jar
COPY application.yml /app/application.yml
#这表示创建了一个在宿主机上的挂载点,容器内的数据会持久化到宿主机的这个目录下
VOLUME /app
#容器启动时就执行的命令,后面的表示读取文件
CMD ["java","-jar","/app/es.jar","--spring.config.location=/app/application.yml"]

利用Maven打包项目

在这里插入图片描述
将程序打包成jar包application.ymlDockerfile一同上传至服务器,比如存放在/app目录下

制作镜像

在这里插入图片描述

执行制作镜像命令

#es-image是镜像的名字,v1.0是镜像的标签也就是版本,最后的‘.’表示Dockerfile的位置就在当前目录,如果你的不在当前目录你就写你的Dockerfile所在的目录
docker build -t es-image:v1.0 .

在这里插入图片描述

启动容器

#指定端口、挂载宿主机配置文件和日志
docker run -d -p 30000:30000 \
-v /app/application.yml:/app/application.yml \
-v /app/logs:/app/logs \
--name es es-image:v1.0
docker ps

在这里插入图片描述
程序正常运行

tail -fn 100 info.log

在这里插入图片描述
日志正常打印

至此镜像制作完成

文章来源:https://blog.csdn.net/weixin_43480202/article/details/135147542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。