将jar制作成docker镜像运行
手动编写 Dockerfile 方式
1. 准备工作
-
确保你已经安装了 Docker,并且 Docker 服务正在运行。
-
有一个可运行的 JAR 文件,假设文件名为
your-application.jar。 -
修改springboot配置文件让日志输出到指定目录下文件中
application.yml
yamllogging: file: name: logs/app.log这会让应用将日志输出到
logs目录下的app.log文件中。
2. 创建 Dockerfile
在 JAR 文件所在的目录下创建一个名为 Dockerfile 的文件,内容如下:
Dockerfile
# 使用基础的 Java 镜像,这里以 OpenJDK 17 为例
FROM openjdk:17-jdk-slim
# 设置工作目录
WORKDIR /app
# 将 JAR 文件复制到工作目录
COPY your-application.jar app.jar
# 创建日志目录 在工作目录下
RUN mkdir -p logs
# 暴露应用程序使用的端口,根据实际情况修改
EXPOSE 8080
# 定义容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]
3. 构建 Docker 镜像
打开终端,进入包含 Dockerfile 和 JAR 文件的目录,执行以下命令构建 Docker 镜像:
bash
docker build -t your-image-name:your-tag .
-t:用于指定镜像的名称和标签,你可以将your-image-name替换为你想要的镜像名称,your-tag替换为版本号或其他标识,例如my-app:1.0。.:表示使用当前目录下的Dockerfile进行构建。
4. 查看构建好的镜像
使用以下命令查看本地已构建的 Docker 镜像:
bash
docker images
你应该能看到刚刚构建的镜像信息。
5. 运行 Docker 容器
使用以下命令运行 Docker 容器:
bash
docker run -p 8080:8080 -d --name your-container-name your-image-name:your-tag
使用以下命令运行 Docker 容器并挂载日志目录(/host/logs 宿主机的日志存放位置 /app/logs 容器中日志存放位置 ):
bash
docker run -p 8080:8080 -v /host/logs:/app/logs -d --name your-container-name your-image-name:your-tag
参数解释
-p 8080:8080:将容器内部的 8080 端口映射到宿主机的 8080 端口,这样可以通过宿主机的 IP 地址和 8080 端口访问容器内运行的应用程序。-v /host/logs:/app/logs:将宿主机的/host/logs目录挂载到容器内的/app/logs目录,实现日志文件的映射,方便在宿主机上查看和管理容器内应用产生的日志。-d:让容器以守护进程(后台)模式运行,即容器在后台持续运行,不会占用当前终端。--name your-container-name:为容器指定一个自定义名称,你可以将your-container-name替换为你希望使用的名称,例如my-spring-boot-app。使用自定义名称后,在后续操作中可以更方便地引用该容器,比如停止、重启、删除容器等操作。your-image-name:your-tag:指定要运行的 Docker 镜像及其标签,your-image-name是镜像的名称,your-tag是镜像的版本标签,例如my-java-app:1.0。
6. 验证应用程序是否正常运行
打开浏览器,访问 http://localhost:8080(如果是在本地运行),如果看到应用程序的响应,说明应用已经成功在 Docker 容器中运行。