通过Docker来快速部署JAVA项目

文章介绍了如何使用Docker构建镜像(包括使用Dockerfile),执行镜像打包,查看镜像,以及在Linux环境下以sudo权限启动和管理容器的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、将jar包和需要运行的相关文件DockerFile上传到指定同一目录下

dockerfile文件的内容:

二、执行镜像打包

sudo docker build . -t test-demo:v1.0

这段代码是用于构建 Docker 镜像的命令:

  • sudo: 这是一个 Linux 命令,用于以超级用户(root)权限执行后续的命令。在某些情况下,执行 Docker 命令可能需要管理员权限,因此使用 sudo 可以确保具备足够的权限。

  • docker build: 这是 Docker 命令的一部分,用于构建 Docker 镜像。它告诉 Docker 引擎根据指定的 Dockerfile 来构建一个新的镜像。

  • .: 这个点号表示当前目录。在构建镜像时,Docker 会将当前目录下的文件和文件夹复制到镜像中。

  • -t test-demo:v1.0: 这是一个选项参数,用于给构建的镜像指定一个标签(tag)。-t 表示标签,test-demo 是镜像的名称,v1.0 是镜像的版本号。通过给镜像添加标签,可以更方便地识别和管理镜像。

综合起来,这段代码的含义是以超级用户权限使用当前目录下的 Dockerfile 构建一个名为 test-demo 版本为 v1.0 的 Docker 镜像。请确保在执行此命令之前已经在当前目录下准备好了 Dockerfile 文件。

三、查看镜像

docker images

由于项目中需要jdk11的环境直接通过

docker pull openjdk:11

#jdk8使用 docker pull java:8

四、启动镜像

sudo docker run -d -p 8555:8099 --name test-demo test-demo:v1.0

这段代码是在 Docker 中运行一个容器的命令:

  • sudo: 这是一个 Linux 命令,用于以超级用户权限运行后续的命令。在某些情况下,需要使用超级用户权限才能执行 Docker 相关的操作。

  • docker run: 这是 Docker 命令,用于创建并运行一个容器。

  • -d: 这是一个选项,代表 "detached",意味着容器将在后台运行。这样可以让容器在后台持续运行而不会占用当前终端。

  • -p 8555:8099: 这是一个选项,用于将容器内部的端口映射到主机上的端口。这里将容器内部的端口 8099 映射到主机上的端口 8555。这样,当您通过主机的 8555 端口访问时,请求将被转发到容器内部的 8099 端口。

  • --name test-demo: 这是一个选项,用于为容器指定一个名称。在这种情况下,容器的名称将被设置为 "test-demo"。

  • test-demo:v1.0: 这是指定要使用的镜像名称和标签。在这里,使用的是名为 "test-demo" 的镜像,并指定了标签为 "v1.0"。

综上所述,这段代码的作用是在 Docker 中创建并运行一个名为 "test-demo" 的容器,使用 "test-demo:v1.0" 镜像,并将容器内部的端口 8099 映射到主机上的端口 8555。容器将在后台以分离模式运行。

以上项目就启动完成了

docker ps :正在运行的容器

docker stop <name>:停止指定容器

docker start <name>:重新运行

### 使用 Docker 和 Jenkins 部署 Java 项目的流程和方法 #### 准备环境 在开始之前,确保宿主机上已经安装了 DockerDocker Compose,并且配置好了 Maven、JDK 等开发工具链。同时,建议将 Jenkins 的持久化数据目录提前规划好,以便于后续维护 [^1]。 #### 启动 Jenkins 容器 可以使用 `docker-compose` 文件来快速启动 Jenkins 容器,以下是一个示例的 `docker-compose.yml` 文件内容: ```yaml version: '3' volumes: jenkins-data: jenkins-jdk17: services: jenkins: image: jenkins/jenkins:latest-jdk17 privileged: true volumes: - jenkins-data:/var/jenkins_home - jenkins-jdk17:/opt/java/openjdk - /export/maven/apache-maven-3.9.5:/usr/local/maven - /export/nvm/nvm-0.39.5/versions/node/v14.21.3:/usr/local/nodejs - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker ports: - "8080:8080" - "50000:50000" container_name: jenkins mem_limit: 800m restart: "always" ``` 此配置文件定义了一个 Jenkins 服务,它会挂载本地的 Maven、Node.js 和 Docker 相关路径到容器内部,使得 Jenkins 可以访问这些工具进行项目构建和部署 [^1]。 #### 配置 Jenkins 启动 Jenkins 后,通过浏览器访问 `http://<host-ip>:8080` 进入 Jenkins 的初始设置界面。按照提示完成初始化配置,包括安装推荐插件、创建管理员账户等步骤。 接着,进入 **Manage Jenkins > Global Tool Configuration** 页面,配置全局工具的位置,例如 Maven、JDK 和 Node.js 的安装路径。由于前面已经通过 Docker 挂载了这些工具的路径,因此可以直接指定相应的路径 [^2]。 #### 创建 Jenkins 任务 创建一个新的自由风格项目(Freestyle project),配置如下关键选项: 1. **源码管理**:选择 Git,输入项目的仓库地址和凭证。 2. **构建触发器**:可以选择定时轮询 SCM 或者通过 Webhook 触发构建。 3. **构建环境**:勾选 “Provide Node & npm bin/ folder to PATH”,如果需要前端构建的话。 4. **构建步骤**:添加执行 Shell 脚本或者调用 Maven 构建目标。例如,对于一个标准的 Spring Boot 应用程序,可以使用 `mvn clean package` 命令来编译和打包应用 [^3]。 #### 编写构建脚本 在 Jenkins 任务的构建步骤中,可以编写一段 Shell 脚本来处理项目的构建和部署过程。假设项目被打包成 JAR 文件,可以通过下面的脚本来停止旧的服务实例并启动新的服务实例: ```bash #!/bin/bash # 停止正在运行的应用 APP_NAME=myapp.jar PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi # 移动到工作空间目录并运行新版本的应用 cd /var/jenkins_home/workspace/myproject nohup java -jar target/*.jar & ``` #### 自动化部署 为了实现更高级的自动化部署,可以在 Jenkins 中集成更多的插件和服务,比如 Kubernetes 插件用于向 Kubernetes 集群部署应用,或者使用 Ansible 进行配置管理和部署任务 [^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值