前言:使用docker部署后端项目,需要将打包好的jar包和dockerfile文件上传至服务器中同一个目录内,进入目录,构建镜像,并运行容器

编写 Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 基础镜像 JDK8 不需要改
FROM eclipse-temurin:8-jre-slim

# 作者
MAINTAINER changwang

# 工作目录 需要改
WORKDIR /data/jar/listen

# 设置时区
ENV TZ=Asia/Shanghai

# 同步docker内部的时间 不需要改
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 暴露端口 需要改
EXPOSE 8081

# 复制jar包到/data/jar/listen下 需要改
ARG JAR_FILE
ADD ${JAR_FILE} ./listen-0.0.1-SNAPSHOT.jar

# 指定jar包、日志的位置 需要改
ENTRYPOINT ["sh", "-c", "nohup java -jar /data/jar/listen/listen-0.0.1-SNAPSHOT.jar > /data/jar/listen/listen.log 2>&1 &"]

构建 Docker 镜像

假设你的 Dockerfile 名为 Dockerfile 并且在当前目录下,你可以运行以下命令来构建 Docker 镜像。假设你的 JAR 文件路径为 listen-0.0.1-SNAPSHOT.jar

1
docker build --build-arg JAR_FILE=listen-0.0.1-SNAPSHOT.jar -t listen-app .

运行 Docker 容器

构建完成后,你可以运行以下命令来启动 Docker 容器:

1
docker run -d -p 8081:8081 --name listen-container listen-app

docker build --build-arg JAR_FILE=listen-0.0.1-SNAPSHOT.jar -t listen-app .:这条命令将使用 listen-0.0.1-SNAPSHOT.jar 作为构建参数 JAR_FILE 来构建 Docker 镜像,并将镜像命名为 listen-app

docker run -d -p 8081:8081 --name listen-container listen-app:这条命令将镜像 listen-app 以分离模式(后台运行)启动一个容器,将宿主机的 8081 端口映射到容器的 8081 端口,并将容器命名为 listen-container

验证容器是否启动成功

你可以使用以下命令查看运行中的容器:

1
docker ps

这将列出所有运行中的容器。如果 listen-container 正在运行,你应该会看到它。

日志查看

你可以使用以下命令查看容器的日志,这样可以帮助你确认应用是否启动成功,以及是否有任何错误信息。

1
docker logs listen-container

停止和删除容器

如果你需要停止和删除容器,可以使用以下命令:

1
2
docker stop listen-container
docker rm listen-container

更新 JAR 文件后重新构建和启动

如果你对 JAR 文件进行了更新,重新构建镜像并启动容器:

1
2
3
4
docker build --build-arg JAR_FILE=listen-0.0.1-SNAPSHOT.jar -t listen-app .
docker stop listen-container
docker rm listen-container
docker run -d -p 8081:8081 --name listen-container listen-app

以上步骤确保你每次更新应用后,Docker 容器都能正确地反映这些更改。