Docker部署 Jar 包 #
1 步骤 #
-
安装docker(略)
-
准备 jar 包所依赖的 MySQL、Redis、RabbitMQ 等Docker容器(略)
-
拉取 jdk 基础镜像
-
准备 jar 包
-
制作 Dockerfile
-
docker build 镜像
-
创建 docker network
-
创建并启动容器
2 拉取 jdk 基础镜像 #
# 本例使用jdk17,各位按需拉取jar包对应jdk版本
docker pull jdk
3 准备好要部署的 jar 包 #
- 项目中 MySQL、Redis 等地址直接该为 docker 容器名称,下面以 MySQL 为例
# application.yml 片段
spring:
profiles:
active: prod
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${myProp.mysql.host}:${myProp.mysql.port}/xxx
# application-prod.yml 片段
myProp:
mysql:
host: mysql-container # docker容器名称
port: xxxx
- 打 jar 包并复制到服务器工作目录
# 项目打成jar包,复制到工作目录
root@tulu:/home# cd tulu-blog
root@tulu:/home/tulu-blog# ls
tulu-blog.jar
4 制作 Dockerfile #
- 创建一个空文件(建议使用Notepad++编辑),命名为 Dockerfile,内容如下:
# 使用官方的OpenJDK基础镜像
FROM openjdk:17
# 复制应用程序文件到容器中
COPY ./tulu-blog/tulu-blog.jar /tulu-blog.jar
# 设置容器启动时运行的命令
ENTRYPOINT ["nohup", "java", "-jar", "tulu-blog.jar",">","blog.log","&"]
- 将 Dockerfile 文件复制到 /home 目录,注意 步骤3 中的 jar 包位置位于 /home/tulu-blog,留意 Dockerfile 中 COPY 语句所操作的路径,因此需要把 Dockerfile 放置到 /home 目录,否则后续步骤将出错
root@tulu:/home# ls
Dockerfile tulu-blog
5 docker build 镜像 #
# 进入 Dockerfile 所在目录
cd /home
# -t tulu-blog 指定镜像名称为tulu-blog:latest
docker build -t tulu-blog .
# 查看镜像列表
root@tulu:/home# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tulu-blog latest d44448314d03 48 minutes ago 534MB
6 创建 docker network #
- 创建 docker network
# docker network create 网络名称
docker network create blog-network
- MySQL、Redis 等容器连接 docker network (下面以 MySQL 为例子)
# docker network connect 网络名称 容器名称
docker network connect blog-network mysql
7 创建并启动容器 #
# docker run -d --name 容器名称 -p 宿主端口:容器端口 --network 网络名称 容器名称
# -d 为后台运行,不加 -d 的话 ctrl c 就会把容器关闭
# --network 指定创建容器后就加入网络
docker run -d --name tulu-blog -p 8080:8080 --network blog-network tulu-blog