Docker部署jar包

Docker部署 Jar 包 #

1 步骤 #

  1. 安装docker(略)

  2. 准备 jar 包所依赖的 MySQL、Redis、RabbitMQ 等Docker容器(略)

  3. 拉取 jdk 基础镜像

  4. 准备 jar 包

  5. 制作 Dockerfile

  6. docker build 镜像

  7. 创建 docker network

  8. 创建并启动容器

2 拉取 jdk 基础镜像 #

# 本例使用jdk17,各位按需拉取jar包对应jdk版本
docker pull jdk

3 准备好要部署的 jar 包 #

  1. 项目中 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
  1. 打 jar 包并复制到服务器工作目录
# 项目打成jar包,复制到工作目录
root@tulu:/home# cd tulu-blog
root@tulu:/home/tulu-blog# ls
tulu-blog.jar

4 制作 Dockerfile #

  1. 创建一个空文件(建议使用Notepad++编辑),命名为 Dockerfile,内容如下:
# 使用官方的OpenJDK基础镜像
FROM openjdk:17
 
# 复制应用程序文件到容器中
COPY ./tulu-blog/tulu-blog.jar /tulu-blog.jar
 
# 设置容器启动时运行的命令
ENTRYPOINT ["nohup", "java", "-jar", "tulu-blog.jar",">","blog.log","&"]
  1. 将 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 #

  1. 创建 docker network
# docker network create 网络名称
docker network create blog-network
  1. 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