欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Ubuntu 系统.sh脚本一键部署内网Java服务(组件使用docker镜像,宕机自启动)

Ubuntu 系统.sh脚本一键部署内网Java服务(组件使用docker镜像,宕机自启动)

2025/6/9 1:10:00 来源:https://blog.csdn.net/ZHOU_0522/article/details/148478532  浏览:    关键词:Ubuntu 系统.sh脚本一键部署内网Java服务(组件使用docker镜像,宕机自启动)
#!/bin/bash# 更新系统并安装必要的依赖
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common# 安装 Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce# 启动并设置 Docker 自启动
sudo systemctl start docker
sudo systemctl enable docker# 1. 下载 MySQL 镜像并启动
MYSQL_ROOT_PASSWORD="root_password"
MYSQL_DATABASE="test_db"
MYSQL_USER="test_user"
MYSQL_PASSWORD="test_password"
SQL_FILE="/path/to/your/init.sql"  # 请替换为您的 SQL 文件路径# 启动 MySQL 容器,分配 2GB 内存
sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD -e MYSQL_DATABASE=$MYSQL_DATABASE -e MYSQL_USER=$MYSQL_USER -e MYSQL_PASSWORD=$MYSQL_PASSWORD --restart unless-stopped -m 2g -d mysql:latest# 等待 MySQL 启动
sleep 30# 运行 SQL 文件
sudo docker exec -i mysql mysql -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < $SQL_FILE# 2. 下载并启动 JDK,分配 2GB 内存
sudo docker run --name openjdk --restart unless-stopped -m 2g -d openjdk:latest# 3. 下载并启动 Redis,分配 2GB 内存
sudo docker run --name redis --restart unless-stopped -m 2g -d redis:latest# 4. 下载并启动 RabbitMQ,分配 2GB 内存
sudo docker run --name rabbitmq -e RABBITMQ_DEFAULT_USER=test_user -e RABBITMQ_DEFAULT_PASS=test_password --restart unless-stopped -m 2g -d rabbitmq:management# 5. 下载并启动 MongoDB,分配 2GB 内存,并创建测试数据库
MONGO_INITDB_ROOT_USERNAME="test_user"
MONGO_INITDB_ROOT_PASSWORD="test_password"
MONGO_INITDB_DATABASE="test_db"
MONGO_INITDB_COLLECTION="test_collection"
MONGO_INITDB_DATA_FILE="/path/to/your/init_data.js"  # 请替换为您的初始化数据文件路径# 启动 MongoDB 容器
sudo docker run --name mongodb -e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME -e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD -e MONGO_INITDB_DATABASE=$MONGO_INITDB_DATABASE --restart unless-stopped -m 2g -d mongo:latest# 等待 MongoDB 启动
sleep 30# 运行初始化数据文件
if [ -f "$MONGO_INITDB_DATA_FILE" ]; thensudo docker exec -i mongodb mongo -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin $MONGO_INITDB_DATABASE < $MONGO_INITDB_DATA_FILE
elseecho "在 $MONGO_INITDB_DATA_FILE 中未找到初始化数据文件,请确保您已添加 MongoDB 初始化数据的 JavaScript 文件。"
fi# 6. 下载并启动 Nginx,分配 2GB 内存
sudo docker run --name nginx --restart unless-stopped -m 2g -p 80:80 -d nginx:latest# 7. 创建前端和后端文件夹
mkdir -p ~/vue-app
mkdir -p ~/java-app# 8. 创建 Nginx 配置文件
NGINX_CONF="/etc/nginx/conf.d/default.conf"
echo "server {listen       80;server_name  localhost;location / {proxy_pass http://java-app:9999;  # 转发到 Java 应用proxy_set_header Host \$host;proxy_set_header X-Real-IP \$remote_addr;proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto \$scheme;}location /frontend/ {root /usr/share/nginx/html;  # 指向前端构建的静态文件目录index index.html index.htm;  # 默认文件try_files \$uri \$uri/ /frontend/index.html;  # 处理 SPA 路由}
}" | sudo tee $NGINX_CONF# 9. 使用 Docker 启动 Java 应用(假设有一个 Dockerfile 在 ~/java-app/)
# 请确保您的 Java 应用程序的 Dockerfile 已经在 ~/java-app 目录中
cd ~/java-app# 这里假设您有一个 Dockerfile
if [ -f Dockerfile ]; thensudo docker build -t my-java-app .sudo docker run --name java-app --restart unless-stopped -m 2g -d -p 9999:9999 my-java-app
elseecho "在 ~/java-app 目录中未找到 Dockerfile,请确保您已添加 Java 应用程序的 Dockerfile。"
fi# 设置所有容器自启动
sudo docker update --restart unless-stopped mysql
sudo docker update --restart unless-stopped openjdk
sudo docker update --restart unless-stopped redis
sudo docker update --restart unless-stopped rabbitmq
sudo docker update --restart unless-stopped mongodb
sudo docker update --restart unless-stopped nginx
sudo docker update --restart unless-stopped java-app# 10. 重新加载 Nginx 配置
sudo docker exec nginx nginx -s reload# 11. 提示用户将前端构建文件复制到 Nginx 提供的目录
echo "请将前端构建输出的文件复制到 /usr/share/nginx/html 目录中,以便通过 Nginx 提供服务。"
echo "例如:sudo cp -r /path/to/vue-app/dist/* /usr/share/nginx/html/"echo "所有服务已安装并启动成功,所有组件在故障时将自动重启,且每个组件限制为 2GB 内存!"

   // init_data.js 示例内容db.test_collection.insertMany([{ name: "Test Data 1", value: "Value 1" },{ name: "Test Data 2", value: "Value 2" },{ name: "Test Data 3", value: "Value 3" }]);

使用方法

1. 将脚本保存为 `setup_docker_services.sh`。
2. 赋予脚本执行权限:

   chmod +x setup_docker_services.sh

3. 运行脚本:

   ./setup_docker_services.sh

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词