以下是在Ubuntu上实现Java应用自动化部署的常见方案,可根据需求选择:
sudo apt update && sudo apt install openjdk-17-jdk
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.keys | sudo apt-key add -
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt install jenkins
sudo systemctl start jenkins && sudo systemctl enable jenkins
pipeline {
agent any
stages {
stage('Build') {
steps { sh 'mvn clean package' } // Maven打包
}
stage('Docker Build') {
steps { script { docker.build("app:${env.BUILD_ID}") } }
}
stage('Deploy') {
steps {
sh 'docker stop app || true'
sh 'docker rm app || true'
sh 'docker run -d --name app -p 8080:8080 app:${env.BUILD_ID}'
}
}
}
}
sudo apt update && sudo apt install ansible
- hosts: webservers
become: true
tasks:
- name: 安装Java
apt: name=openjdk-17-jdk state=present
- name: 上传JAR包
copy: src=/local/app.jar dest=/opt/app.jar
- name: 启动应用
shell: nohup java -jar /opt/app.jar > /dev/null 2>&1 &
ansible-playbook -i hosts deploy.yml
#!/bin/bash
SERVER_IP="your_server_ip"
JAR_PATH="/opt/app.jar"
LOCAL_JAR="target/app.jar"
# 停止旧进程
ssh user@$SERVER_IP "pkill -f $JAR_PATH || true"
# 上传新JAR
scp $LOCAL_JAR user@$SERVER_IP:$JAR_PATH
# 启动新进程
ssh user@$SERVER_IP "nohup java -jar $JAR_PATH > /dev/null 2>&1 &"
ssh-keygen -t rsa
ssh-copy-id user@$SERVER_IP
journalctl -u app或docker logs)。根据项目规模选择方案:小型项目可用Shell脚本,中型项目推荐Jenkins+Docker,大型企业级项目可结合Ansible实现全流程自动化。