字符串分割成数组
#!/bin/bash
str="192.168.0.152:3306/MysqL?192.168.0.153:3306/MysqL?192.168.0.154:3306/MysqL?192.168.0.155:3306/MysqL"
OLD_IFS="$IFS"
IFS="?"
arr=($str)
IFS="$OLD_IFS"
for s in ${arr[@]}
do
echo "$s"
done
docker清理
https://github.com/HardySimpson/docker-cleanup
tomcat环境初始化
init_env.sh
#!/bin/bash
groupadd -r app && useradd -r -g app app
mkdir -p /home/app/install
yum install -y unzip net-tools java-1.8.0-openjdk openssh-server openssh-client openssh wget vim git lrzsz crontabs
echo -e "\n" >> /root/.vimrc
echo "set encoding=utf-8" >> /root/.vimrc
echo "set termencoding=utf-8" >> /root/.vimrc
echo "set fileencodings=utf-8,gbk,latin1" >> /root/.vimrc
python3初始化
init_python3.sh
#!/bin/bash
yum -y install zlib-devel bzip2-devel openssl-devel \
ncurses-devel sqlite-devel readline-devel tk-devel \
gdbm-devel db4-devel libpcap-devel xz-devel
cd /usr/local/src/
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
mkdir -p /usr/local/python3
tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
cat >> /root/.bash_profile <<EOF
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
EOF
source ~/.bash_profile
python3 -V
镜像构建[版本:青铜] k8s_build_image.sh
DOCKERFILE
#基础镜像
FROM tomcat:latest
定义时区
ENV TZ Asia/Shanghai
定义项目名
ENV PROJECT_NAME app
定义项目工作目录
ENV WORK_PATH_ROOT /usr/local/tomcat/webapps
定义配置文件目录
ENV WORK_PATH_CONF $WORK_PATH_ROOT/$PROJECT_NAME/WEB-INF/classes
定义要替换的配置文件名:jdbc.properties
ENV JDBC_CONF jdbc.properties
定义要替换的配置文件名:redis.properties
ENV REDIS_CONF redis.properties
定义要替换的配置文件名:logback.xml
ENV LOG_CONF logback.xml
定义要替换的配置文件名:system.properties
ENV SYS_CONF system.properties
把解压后的项目包放入项目路径下
COPY $PROJECT_NAME $WORK_PATH_ROOT/$PROJECT_NAME
删除解压包内的配置文件
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& rm $WORK_PATH_CONF/$JDBC_CONF \
&& rm $WORK_PATH_CONF/$REDIS_CONF \
&& rm $WORK_PATH_CONF/$LOG_CONF \
&& rm $WORK_PATH_CONF/$SYS_CONF
复制配置文件
COPY ./$JDBC_CONF $WORK_PATH_CONF/
COPY ./$REDIS_CONF $WORK_PATH_CONF/
COPY ./$LOG_CONF $WORK_PATH_CONF/
COPY ./$SYS_CONF $WORK_PATH_CONF/
SHELL:
!/bin/bash
package_name=$1
if [ $# != 1 ] ; then
echo -e "\n\033[31mUSAGE: $0 package_name\033[0m"
echo -e "\n\033[31m e.g.: $0 app-1.2.3.war\033[0m\n"
exit 1;
fi
fileserver_url='http://192.168.1.1/deploy'
app_name=app
version=echo $package_name |cut -d- -f 2|sed 's/.war$//g'
echo $package_name
rm -rf $app_name
wget -c $fileserver_url/$app_name/$package_name && unzip $package_name -d $app_name
docker build -t tomcat/$app_name:$version .
rm -f $package_name
docker tag tomcat/app:$version 192.168.1.2:5000/ims:$version
docker push 192.168.1.2:5000/ims:$version
K8_master 启动项目 [版本:青铜]
#!/bin/bash
image_url=$1
if [ $# != 1 ] ; then
echo -e "\n\033[31mUSAGE: $0 image_url\033[0m"
echo -e "\n\033[31m e.g.: $0 app:1.2.3\033[0m\n"
exit 1;
fi
registry_url='192.168.1.2:5000'
project_name=app
expose_port=8080
kubectl run $project_name --image=$registry_url/$image_url --port=$expose_port # 部署容器
kubectl expose deployment $project_name --type='NodePort' --port=$expose_port # 对外映射
kubectl get pods -o wide # 查看pod
kubectl get services/$project_name # 查看服务
kubectl describe services/$project_name # 查看详细映射
kubectl get deployments -o wide # 查看应用信息
k8s操作流程[版本:白银]
001-init-env.dockerfile
FROM centos:latest
MAINTAINER bang
ENV REFRESHED_AT 2018-12-26
ENV TZ Asia/Shanghai
WORKDIR /usr/local
RUN mkdir jdk && mkdir tomcat
ADD jdk-8u91-linux-x64.tar.gz /usr/local/jdk
ADD tomcat-cpy-8.0.46.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk/jdk1.8.0_91
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& yum install -y epel-release && yum install -y redis \
&& chmod +x /usr/local/tomcat/bin/catalina.sh
002-app.dockerfile
基础镜像
FROM cpy/env:2.3.1
定义项目名
ENV PROJECT_NAME ims
定义项目工作目录
ENV WORK_PATH_ROOT /usr/local/tomcat/webapps
定义配置文件目录
ENV WORK_PATH_CONF $WORK_PATH_ROOT/$PROJECT_NAME/WEB-INF/classes
定义要替换的配置文件名:jdbc.properties
ENV JDBC_CONF jdbc.properties
定义要替换的配置文件名:redis.properties
ENV REDIS_CONF redis.properties
定义要替换的配置文件名:logback.xml
ENV LOG_CONF logback.xml
定义要替换的配置文件名:system.properties
ENV SYS_CONF system.properties
把解压后的项目包放入项目路径下
ADD tomcat-wm-8.0.46.tar.gz /usr/local/
COPY $PROJECT_NAME $WORK_PATH_ROOT/$PROJECT_NAME
删除解压包内的配置文件
RUN rm $WORK_PATH_CONF/$JDBC_CONF \
&& rm $WORK_PATH_CONF/$REDIS_CONF \
&& rm $WORK_PATH_CONF/$LOG_CONF \
&& rm $WORK_PATH_CONF/$SYS_CONF
复制配置文件
COPY ./$JDBC_CONF $WORK_PATH_CONF/
COPY ./$REDIS_CONF $WORK_PATH_CONF/
COPY ./$LOG_CONF $WORK_PATH_CONF/
COPY ./$SYS_CONF $WORK_PATH_CONF/
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
003-build_app.sh
!/bin/bash
package_name=$1
fileserver_url='http://192.168.1.2/deploy'
app_name=app
version=echo $package_name |cut -d- -f 2|sed 's/.war$//g'
echo -e '\n'$package_name
if [ $# != 1 ] ; then
echo -e "\n\033[31mUSAGE: $0 package_name\033[0m"
echo -e "\n\033[31m e.g.: $0 app-1.2.3.war\033[0m\n"
exit 1;
fi
wget -c $fileserver_url/$app_name/$package_name
is_exist=echo $?
if [ $is_exist != 0 ]; then
echo -e "\n\033[31m[Warnning] This package does not exist...\033[0m\n"
exit 1
fi
rm -rf $app_name
unzip $package_name -d $app_name
docker build -t tomcat/$app_name:$version .
rm -f $package_name
docker tag tomcat/ims:$version 192.168.1.1:5000/ims:$version
docker push 192.168.1.1:5000/ims:$version
004-app.yaml
apiVersion: v1
kind: Deployment
Metadata:
name: deployment-app-2
spec:
replicas: 2
template:
Metadata:
labels:
app: app-2
spec:
restartPolicy: Always
containers:
- name: app-2
image: 192.168.1.1:5000/ims:1.2.3
ports:
- containerPort: 8080