使用docker或java命令一键简单部署Java应用

本文介绍了一种使用Docker Stack快速部署Java应用的方法,包括脚本操作,如编辑Dockerfile、构建镜像及使用docker-compose。同时提供了另一种简化方式,直接通过Java-jar启动。

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

使用docker或java命令一键简单部署Java应用

记录下最近使用内网上的linux部署个中间层应用的脚本。
由于内网中有docker有用到docker swarm,则这个脚本是使用docker stack启动的应用。
当然,直接使用docker run或者使用docker compose方式启动也是可以的,不过,就需要手动调整下脚本内容了。
或者使用方式二中更简单的java -jar的方式启动

方式一:使用docker一键简单部署Java应用

创建脚本文件app-deploy.sh

  • 注意事项
    • 调整应用版本号app_version
    • 调整应用名称JOB_NAME
    • 手动上传jar包到./target目录下,且该目录下只需要一个jar包。
      • 当然也可以使用git拉取代码后,使用maven打成jar包的方式一键启动(war包的话,需调整下Dockerfile文件)。
#!/bin/sh

export JOB_NAME='magpie-server'

old_version=`docker images | grep $JOB_NAME | awk '{print $2}' | head -n1`
# 版本号从0.01开始自增
export app_version=`awk 'BEGIN{printf "%.2f",('$old_version'+'0.01')}' `
echo "上一版本为: "$old_version", 当前版本为: "$app_version

# 创建零时与模板文件夹
mkdir -p ./temp/templates >/dev/null 2>&1

cd ./temp

# 编辑Dockerfile文件
tee Dockerfile <<-'EOF'
FROM eclipse-temurin:8-jre
WORKDIR /workdir
ADD ./target/*.jar app.jar
ENV SPRING_PROFILES_ACTIVE=prod
ENV SERVER_PORT=8080
ENV JAVA_OPTS="-Xms512m -Xmx512m"
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -Dserver.port=$SERVER_PORT -jar app.jar
EXPOSE 8080
EOF

# 构建镜像
docker build --no-cache -t $JOB_NAME:$app_version .

# 删除空镜像
docker images | awk '{if($1=="<none>")print $3}' | xargs docker rmi &> /dev/null

# 创建模板文件夹
mkdir ./templates >/dev/null 2>&1

# 编辑stack yml文件
tee ./templates/$JOB_NAME.yml <<-'EOF'
version: '3.5'
services:
  $JOB_NAME:
    image: $JOB_NAME:${app_version}
    environment:
      TZ: "Asia/Shanghai"
    ports:
      - target: 8080
        published: 18787
        mode: host
    # networks:
    #   - middleware
    deploy:
      replicas: 1
      update_config:
        parallelism: 1
      restart_policy:
        condition: on-failure

# 这里网络可以不创建,需要的话可以通过以下命令创建
# docker network create -d  overlay --attachable middleware

# networks:
#   middleware:
#     external: true

EOF

# 通过模板填充模板变量,并写入到新文件中
envsubst '$JOB_NAME,$app_version' < ./templates/$JOB_NAME.yml > ./$JOB_NAME.yml

# 启动app
docker stack up -c $JOB_NAME.yml app --with-registry-auth

使用命令sh app-deploy.sh即可部署Java应用了

方式二:直接使用Java -jar启动

app-deploy-jar.sh脚本配置

#!/bin/sh

APP_NAME='magpie-server'
SERVER_PORT=18787

# 杀进程
ps aux | grep $SERVER_PORT | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1

# 创建零时与模板文件夹
mkdir -p ./temp/logs >/dev/null 2>&1

cd ./temp/


# 启动服务
SPRING_PROFILES_ACTIVE=prod
JAVA_OPTS="-Xms512m -Xmx512m"
nohup java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -Dserver.port=$SERVER_PORT -jar ./target/$APP_NAME.jar>> ./logs/$APP_NAME.log 2>&1 &

# 开放端口
# firewall-cmd --zone=public --add-port=$SERVER_PORT/tcp
# firewall-cmd --reload

# 查看端口开放情况
# firewall-cmd --list-all

使用命令sh app-deploy-jar.sh即可部署Java应用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随猿Fa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值