优雅的部署-Spring Boot Docker容器化部署脚本

  • Post author:
  • Post category:其他




Spring Boot Docker容器化部署脚本

#!/bin/bash

# 定义变量
IMAGE_NAME=ydsc:v1
CONTAINER_NAME=ydsc-container

# 判断容器是否存在,若存在则停止并移除
if [ $(docker ps -q -f name=$CONTAINER_NAME) ]; then
    echo "Stopping and removing $CONTAINER_NAME container..."
    docker stop $CONTAINER_NAME
    docker rm $CONTAINER_NAME
fi

# 判断镜像是否存在,若存在则移除
if [ $(docker images -q $IMAGE_NAME) ]; then
    echo "Removing old $IMAGE_NAME image..."
    docker rmi $IMAGE_NAME
fi

# 构建镜像
echo "Building new $IMAGE_NAME image..."
docker build --no-cache -t $IMAGE_NAME .

# 启动容器
echo "Starting $CONTAINER_NAME container..."
docker run -d -v $(pwd)/log:/app/log --name $CONTAINER_NAME -p 8093:8093 $IMAGE_NAME

# 判断容器是否成功启动
if [ $(docker ps -q -f name=$CONTAINER_NAME) ]; then
    echo $CONTAINER_NAME "myapp service is running"
    docker logs -f $CONTAINER_NAME
else
    echo $CONTAINER_NAME "myapp service failed to start"
fi

解析:

第一行指定脚本解释器为 bash。

定义变量 IMAGE_NAME 和 CONTAINER_NAME,用于指定镜像名和容器名。

判断容器是否存在,若存在则停止并移除。



(

d

o

c

k

e

r

p

s

q

f

n

a

m

e

=

(docker ps -q -f name=






(


d


oc


k


er


p


s













q













f


nam


e




=





CONTAINER_NAME) 是一个命令替换,用于获取容器 ID。[ ] 中间的部分是一个测试命令,用于检查条件是否成立。echo 用于输出日志。

判断镜像是否存在,若存在则移除。$(docker images -q $IMAGE_NAME) 同样是一个命令替换,用于获取镜像 ID。

构建镜像。docker build –no-cache -t $IMAGE_NAME . 用于构建镜像,–no-cache 参数表示不使用缓存,-t 参数用于指定镜像名,. 表示 Dockerfile 文件所在目录。

启动容器。docker run -d -v $(pwd)/log:/app/log –name $CONTAINER_NAME -p 8093:8093 $IMAGE_NAME 用于启动容器,-d 表示在后台运行,-v 表示挂载目录,–name 表示指定容器名,-p 表示映射端口。

判断容器是否成功启动,若成功则输出容器名和日志。docker logs -f $CONTAINER_NAME 用于查看容器日志。



版权声明:本文为qq_43571809原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。