Commit bedc38b4 authored by lvweichao's avatar lvweichao

update: new deploy script

parent 9661ddf4
# docker run -d -p 8374:8374 test pm2-docker start pm2.json
FROM docker2.yidian.com:5000/node:latest
RUN npm config set registry https://registry.npm.taobao.org \
&& npm config set loglevel error \
&& npm install -g pm2
# 下面的可以全部注释掉
ADD ./package.json /tmp/package.json
RUN cd /tmp && npm install --no-optional
RUN mkdir -p /src && cp -a /tmp/node_modules /src/
ADD ./ /src
RUN cd /src && npm run build
WORKDIR /src
EXPOSE 8374
npm run web-build
\ No newline at end of file
......@@ -3,12 +3,12 @@
QA_PRE_START_CMD="" #用于测试环境在START_CMDS执行之前执行,一般用来去掉服务启动时候的内存要求。
START_CMDS="cd /home/worker/ && sh start.sh ${TARGET_ENV}" #进入docker container以后的服务启动命令
DOCKER_PORT_MAPS="9012:9012" #宿>主机端口:container内部端口的映射关系
DOCKER_PORT_MAPS="8055:8055" #宿>主机端口:container内部端口的映射关系
DOCKER_VOLUMN_MAPS="~/_logs/${COMPONENT}-${TARGET_ENV}:/home/worker/op-web-service/logs" #宿主机目录和container内部的目录映射关系
DOCKER_RUN_OPTIONS="--net=host" #docker启动时候额外的特殊的启动参数
DOCKER_PRESTOP_CMD="" #停止容器之前,执行的一些清理操作
SERVICE_PORT="9012" #服务的端口
SERVICE_PORT="8055" #服务的端口
DONT_CHECK_PORT='false' #如果服务不启动端口,那么这个设置为false
#只用于线上部署,服务降级命令(纯字符串,使用单括号),如果部署时downgrade_flag设置成true, 则在部署完成后,enable haproxy之前,在部署的container内部执行这个命令
......
#!/usr/bin/env bash
SERVICE_DIR="camel" # 修改为正确的服务的名称
cp ./${SERVICE_DIR}/bin/${SERVICE_DIR}.tar.gz ./
tar zxf ${SERVICE_DIR}.tar.gz -C ./
npm run prod
mkdir ../logs
touch ../logs/warmup.done
touch ../logs/start_script.done
chown nobody:nobody -R /home/services/${SERVICE_DIR}/logs
chmod 777 -R /home/services/${SERVICE_DIR}/logs
while true;do
sleep 30;done
rm /home/services/op-web-service/logs/start_script.done
cd /home/services/op-web-service/htdocs/
mv /opt/project_lib/node_modules /home/services/op-web-service/htdocs/
env=$1
port=$2
if [ $env != "" ]; then
cd /home/services/recipe/$env
sh ./*.rule
cd -
fi
if [ X"$port" = X];then
$port=8055
fi
cd /home/services/op-web-service/htdocs/
if [ X"$env" = X"prod" ];then
echo "{\"pm2-logrotate\":{\"max_size\":\"524288000\",\"interval\":\"7\",\"retain\":\"10\"},\"module-db\":{\"pm2-logrotate\":true}}" > /root/.pm2/module_conf.json
port=8055
pm2 start pm2.json
else
PORT=$port NODE_ENV=$env pm2 start app.js --name 'opwebservice' --watch
fi
while true; do
s=`netstat -ntl | grep ":${port}" -c`
if [ "X$s" != "X" ] && [ "$s" != "0" ]; then
break
fi
pm2 restart all;
sleep 10;
done
touch /home/services/op-web-service/logs/start_script.done
while true;do
sleep 30;done
......@@ -7,7 +7,7 @@ START_CMDS="tar zxf webui_opwebservice_package.tar.gz -C opservice.yidianzixun.c
CONTAINER_NAMES="webui-opwebservice-${env}"
# Port maps for each container, one map a line, same order with $start_cmds
DOCKER_PORT_MAPS="9012:8055"
DOCKER_PORT_MAPS="8055:8055"
# This is for changing container name, remove old containers when deploy new one
OLD_CONTAINER_NAMES="
......@@ -27,6 +27,6 @@ IMAGE_NAME="docker2.yidian.com:5000/publish/webui-opwebservice-master-${release_
# This is for stopping container, kill sepicify process inside the container before 'docker stop' and 'docker rm'
DOCKER_PRESTOP_CMD=""
# Service port for apitest
SERVICE_PORT="9012"
SERVICE_PORT="8055"
# Service port inside container
ORIGIN_SERVICE_PORT="8055"
#!/bin/bash
branch_name='develop'
pmJson='pm2-test.json'
if [ $1 ]
then
branch_name=$1
pmJson='pm2-test2.json'
fi
echo $branch_name
git fetch --all
git checkout ${branch_name}
git reset --hard origin/${branch_name}
git pull
npm config set registry https://registry.npm.taobao.org
npm i yarn -g
yarn install
rm -rf public
mkdir public
npm run prodTest
cp ./favicon.ico public/camel/
mv public/camel/index.html server/views/index.html
pm2 startOrReload ${pmJson}
#!/usr/bin/env bash
function assemble_env {
IMAGE_NAME=docker2.yidian.com:5000/publish/${COMPONENT}-${COMMIT_NUMBER}-image
docker build -t ${IMAGE_NAME} .
RET=$?
if [ $RET -ne 0 ];then
echo "docker build failed"
exit $RET
fi
echo "Push image to registry"
docker push $IMAGE_NAME
RET=$?
if [ $RET -ne 0 ];then
echo "docker push failed"
exit $RET
fi
}
#===========Main process begins===============================
DIST_FILE_NAME="Camel"
echo "Our commit job is "${COMMIT_JOB}
echo "Our commit number is "${COMMIT_NUMBER}
if [ "${DIST_FILE_NAME}" != "" ]; then
lftp -e "mget ${DIST_FILE_NAME}.tar.gz;quit" -u worker,services sftp://dist.yidian-inc.com:22/home/worker/jenkins_output/${COMMIT_JOB}/${COMMIT_NUMBER}/
if [ "$?" != "0" ]; then
echo "[FATAL] Failed to download dist packages!"
exit 1
fi
fi
mkdir ${DIST_FILE_NAME}
tar zxf ${DIST_FILE_NAME}.tar.gz -C ${DIST_FILE_NAME}
if [ "${DOCKERFILE}" != "" ]; then
cp ${DOCKERFILE} ./Dockerfile
fi
if [ "${COMPONENT}" = "" ]; then
COMPONENT=`echo ${JOB_NAME} | awk -F '-assemble' '{print $1}' | awk -F '-commit' '{print $1}'`
fi
assemble_env
{
"apps": [
{
"name": "opwebservice",
"script": "app.js",
"cwd": "",
"exec_mode": "cluster",
"instances": 4,
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {
"NODE_ENV": "test"
}
}
]
}
{
"apps": [
{
"name": "opwebservice",
"script": "app.js",
"cwd": "",
"exec_mode": "cluster",
"instances": 0,
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {
"NODE_ENV": "production"
}
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment