#!/bin/bash
#定义目录
filepath=/usr/code
cd $filepath
#使用rz上传文件
rz -y
#删除原来的容器(先停止再删除)
docker stop hellodocker
docker rm -f hellodocker
#删除镜像
IMAGEID=docker images |grep hellodocker |awk ‘{print $3}’
docker rmi -f $INAGEID
#重新build镜像
docker build -t hellodocker:1.0.0 .
#运行容器
docker run --name hellodocker -d -p 8088:8088 --restart=always hellodocker:1.0.0
sleep 3s
docker ps
echo 恭喜你,部署成功.可使用docker logs -f hellodocker查看实时运行日志
这种也不太好,不太方便。
我建议使用我的这种方式:
将docker-entrypoint.sh文件和dockerfile文件写在项目里面,一起上传到git交给jenkins打包,打总包,然后解压后,执行dockerfile文件时也执行了docker-entrypoint.sh文件启动项目。
dockerfile:
FROM harbor.hst.com:8443/cespublic/openjdk:8-jdk-alpine-font-mysqlclient
MAINTAINER wangkun@hst.com
COPY target/cesManager.jar /cesManager.jar
COPY docker-entrypoint.sh /docker-entrypoint.sh
WORKDIR /usr/local/hst/
RUN chmod g+x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
docker-entrypoint.sh:
#!/bin/sh
#---------base variable --------------------------
cur_dir=$(pwd)
echo "工作目录:"$cur_dir
# log directory -----------------------------------
if [ ! -d logs ];then
mkdir logs
fi
if [ -f "logs/ces_console.log" ];then
rm -f logs/ces_console.log
fi
# -- java path ------------------------------------
javawebserver="java"
if [ ! -x $JAVA_HOME/bin/javawebserver ]
then
cp $JAVA_HOME/bin/java $JAVA_HOME/bin/javawebserver
fi
javawebserver=$JAVA_HOME/bin/javawebserver
if [ $javawebserver = "java" ]
then
echo "WARN !!!: The command javawebserver was not found, use java"
fi
#----db type-----
dbType="db"
case ${DB_TYPE} in
dm)
dbType="db-dm"
;;
kingbase)
dbType="db-kingbase"
;;
mariadb.yml)
dbType="db-mariadb"
;;
*)
export CES_DATABASE_BASE=/usr/bin/
dbType="db"
;;
esac
# ---------- set env -------------------------------
#Wait for other services to start
#Directory of database installation
#export CES_DATABASE_BASE=/usr/local/hst/mysql/bin
#Directory where data backup files are stored
#export CES_DATA_BACKUP_BASE=/usr/local/data
exec $javawebserver -Xms2048m -Xmx2048m -XX:MaxDirectMemorySize=512m -XX:+UseG1GC \
-Djava.security.egd=file:/dev/./urandom \
-Djava.net.preferIPv4Stack=true \
-Dserver.port=8080 \
-Dserver.http.port=${NGINX_HTTP_PORT} \
-Dserver.ssl.enabled=false \
-Dserver.webControl.enable=false \
-Dserver.webApp.enable=false \
-Dhst.ces.version=${CES_VERSION} \
-Dhst.ces.algorithm="MD5|DES" \
-Dhst.ces.ftpDirectory=${CES_FTP_DIR:-/usr/FMFiles/ftp} \
-Dhst.ces.clusterMode=${CES_CLUSTER:-false} \
-Dserver.undertow.accesslog.enabled=false \
-Dserver.undertow.accesslog.enabled.dir=./ \
-Dignite.clusterAddresses=${IGNITE_CLUSTER_ADDRESSES:-127.0.0.1} \
-Dces.fsp.ice.address=${FSP_ICE_IP} \
-Dces.fsp.ice.port=${FSP_ICE_PORT:-20010} \
-Dhst.live.media=${LIVE_MEDIA} \
-Dhst.live.liveurl=${LIVE_URL} \
-Dhst.live.appKey=${LIVE_APP_KEY} \
-Dhst.live.appSecret=${LIVE_APP_SECRET} \
-Dhst.ces.pass.fsp.devId=${FSP_DEV_ID:-9f08cb39074bb831586ce998fd983206} \
-Dhst.ces.pass.fsp.devSecret=${FSP_DEV_SECRET:-c30878b783e17dcb} \
-Dspring.profiles.include=$dbType,i18n,cache,extender,base,serv,auth,message,meeting,fmapi,fmapi-rest,meeting-rs \
-jar /cesManager.jar