Docker容器之SpringBoot多环境部署

一.  项目结构:

说明: 其中1为启动脚本,2为maven构建配置 3 为将项目构建成公司统一管理风格 4 为pom依赖

app_control.bash:

#!/bin/bash
set -o pipefail
set -u
EXTERNAL_LOADER_PATH="../conf"
SERVER_PORT=8080
SHUTDOWN_HOST=127.0.0.1
EXEC_STD_OUT=/dev/null
LOG_ROOT_PATH="./logs"
LOG_FILE_NAME="em.log"
#source env.bash
#evironment set
WEB_BIN=`pwd`
CONF_DIR="${WEB_BIN}/../conf"
CONFIG_LOCATION=/data1/www/rz_entrance/config/java_config/rz_em_etl/application.properties
JAVA_OPTS=" -server -Xmx1g -Xms1g  -Xmn256m -XX:MetaspaceSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
JAVA_OPTS="${JAVA_OPTS} -Dserver.port=${SERVER_PORT}"
#JAVA_OPTS="${JAVA_OPTS} -Dloader.path=${WEB_BIN}/../conf,${EXTERNAL_LOADER_PATH}"
#JAVA_OPTS="${JAVA_OPTS} -Dlogging.path=${LOG_ROOT_PATH} -Dendpoints.logfile.external-file=${LOG_ROOT_PATH}/${LOG_FILE_NAME}"
START_UP_EXEC="java -Dfile.encoding=utf-8 -Dspring.config.location=${CONFIG_LOCATION} ${JAVA_OPTS} -jar $WEB_BIN/../lib/rz-em-etl.jar"
#Time Config
START_WAIT=5
SHUT_WAIT=10
KILL_INTERVAL=5
KILL_TIMES=5
#RETURN CODES
RET_SUCCESS=0
RET_INSTANCE_DEAD=1
RET_ERROR_SHUT=2
RET_ERROR_START=3
RET_STATUS_ALIVE=0
RET_STATUS_NOT_ALIVE=1
INSTANCE_PID=rz-em-etl.pid

function get_Pid(){
    if [ ! -z ${INSTANCE_PID} ];then
        if [ -f ${INSTANCE_PID} ];then
            cat "${INSTANCE_PID}"
        fi
    else
        ps -ef | grep -vE "grep $WEB_BIN|$0" | grep ${WEB_BIN} | awk '{print $2}'
    fi
}
#get pid
PID=`get_Pid`
function usage(){
        cat <<EOM
    Purpose  :    This script encapsulates the spring boot jar and just acts like a controller.
    Usage    :    bash ${0} start|shutdown|kill|force|restart|status
    Date     :    2017.03
EOM
}
#test instance alived or not
function is_Instance_Alive(){
    #kill -0 : test process alived or not
    if `kill -0 ${PID} 2>/dev/null` ; then
    #0 stands for success in shell
        return ${RET_SUCCESS}
    else
        return ${RET_INSTANCE_DEAD}
    fi
}
## remove pid file
function remove_Pid(){
   if [ ! -z ${INSTANCE_PID} ];then
       if [ -f ${INSTANCE_PID} ];then
           rm -f ${INSTANCE_PID}
       fi
   fi
}
## shutdown Instance
function shutdown_Instance(){
    if ! is_Instance_Alive ;then
        echo "no need to stop, not found PID"
        return ${RET_SUCCESS}
    else
        echo -n "shutdown instanc
### 如何在Docker容器部署Spring Boot应用程序 #### 准备工作 为了顺利地在Docker容器部署Spring Boot应用程序,需具备一定的基础知识和技术准备。这包括但不限于对Docker、Spring Boot以及YAML文件的理解和操作能力[^3]。 #### 创建Spring Boot应用 首先,在`src/main/java/com/example/demo`目录下建立一个新的Java类文件命名为`DemoApplication.java`。此文件应包含启动Spring Boot应用所需的核心代码: ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这段代码定义了一个基础的Spring Boot应用程序入口点,它能够监听HTTP请求并作出响应[^4]。 #### 构建Docker镜像 接着要创建一个名为`Dockerfile`的文本文件用于描述怎样打包上述Spring Boot程序到Docker环境中去执行。该文件通常位于项目的根目录,并且内容如下所示[^2]: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 这里选择了轻量级的基础映像openjdk:8-jdk-alpine作为运行环境,并指定了应用程序的主要入口为编译后的`.jar`包形式。 #### 执行构建与运行命令 完成以上准备工作之后就可以利用Docker CLI工具来进行实际的操作了。具体来说就是先通过`docker build -t spring-boot-app .`指令基于前面提到的`Dockerfile`来制作自定义的应用镜像;再借助于`docker run -p 8080:8080 spring-boot-app`把新生成好的镜像实例化成正在工作的容器[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值