提交 cb702cf8 作者: yanxin

容器化部署配置

上级 8bf8a90b
...@@ -28,3 +28,8 @@ svc_port="9098" ...@@ -28,3 +28,8 @@ svc_port="9098"
nacos_server="192.168.0.224:8848" nacos_server="192.168.0.224:8848"
nacos_username="nacos" nacos_username="nacos"
nacos_password="nacos" nacos_password="nacos"
# 资源限制
## cpu
limit_cpu=2.0
limit_mem=2g
\ No newline at end of file
...@@ -28,3 +28,8 @@ svc_port="9098" ...@@ -28,3 +28,8 @@ svc_port="9098"
nacos_server="192.168.0.225:8848" nacos_server="192.168.0.225:8848"
nacos_username="nacos" nacos_username="nacos"
nacos_password="nacos" nacos_password="nacos"
# 资源限制
## cpu
limit_cpu=2.0
limit_mem=2g
\ No newline at end of file
...@@ -22,6 +22,7 @@ function print_usage { ...@@ -22,6 +22,7 @@ function print_usage {
function handle { function handle {
local env_name=$1 local env_name=$1
local build_timestamp=$2 local build_timestamp=$2
local local_ip=$3
echo "执行的环境变量: ${env_name}" echo "执行的环境变量: ${env_name}"
echo "执行的构建时间戳: ${build_timestamp}" echo "执行的构建时间戳: ${build_timestamp}"
...@@ -36,38 +37,43 @@ function handle { ...@@ -36,38 +37,43 @@ function handle {
local version=${version}-${build_timestamp} local version=${version}-${build_timestamp}
echo "---运行容器: ${name}:${version}---" echo "---运行容器: ${name}:${version}---"
docker login -u=${repo_username} -p=${repo_passwd} ${domain} # 构建 JSON 数据
docker pull ${domain}/${namespace}/${name}:${version} json_data="{ \
\"container_name\": \"$name\", \
\"image_version\": \"$domain/$namespace/$name:$version\", \
\"ports\": [\"$svc_port:$svc_port\"], \
\"mount_infos\": [\"/etc/localtime:/etc/localtime:ro\", \"$dir/logs:$svc_logs\"], \
\"cpu_count\": $limit_cpu, \
\"memory_limit\": \"$limit_mem\", \
\"ulimit\": \"nofile=65535:65535\" \
}"
if [ "$(docker ps -aqf "name=^${name}")" ]; then # 执行 curl 请求,并将响应结果存储在 response 变量中
# 如果存在,则停止并删除容器 response=$(curl -s -X POST -H "Content-Type: application/json" -H "X-API-Key: uOyKfp20pdM3MFhr3KAQBoe1UHCaZLUeeLephB57MPvGXTY05Eis5eaxta6fEtpa" -d "$json_data" "http://$local_ip:10080/start-container")
echo "停止并删除容器: ${name}" echo "响应结果: ${response}"
docker rm -f "${name}" # 检查响应中是否包含 "succeed"
if echo "$response" | grep -q "successfully"; then
echo "部署成功"
exit 0
else else
echo "容器不存在直接运行: ${name}" echo "部署失败"
exit 1
fi fi
docker run --restart always -d -p ${svc_port}:${svc_port} --name ${name} \
-v /etc/localtime:/etc/localtime:ro \
-v ${dir}/logs:${svc_logs} \
${domain}/${namespace}/${name}:${version}
echo "---清理none镜像---"
docker image prune -af
} }
# 主程序入口点 # 主程序入口点
function main { function main {
if [ "$#" -ne 2 ]; then if [ "$#" -ne 3 ]; then
print_usage print_usage
echo "错误: 需要提供两个个参数 <env_name> <build_timestamp>" >&2 echo "错误: 需要提供三个参数 <env_name> <build_timestamp> <local_ip>">&2
exit 1 exit 1
fi fi
local env_name=$1 local env_name=$1
local build_timestamp=$2 local build_timestamp=$2
local local_ip=$3
handle "${env_name}" "${build_timestamp}" handle "${env_name}" "${build_timestamp}" "${local_ip}"
} }
# 错误处理 # 错误处理
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论