一、java安装
1.1 java环境配置
1.1.1 解压jdk
tar -zxvf -C 压缩包 /usr/local/java
1.1.2 更改配置文件
vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
1.1.3 设置软连接加入到命令中
ln -s /usr/local/java/bin/java /usr/bin/java
二、jenkins安装
2.1 使用yum安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https:
sudo rpm --import https:
yum install jenkins
2.2 jenkins配置
2.2.1 jenkins的java环境配置

vim /etc/init.d/jenkins
添加 1.1.3 设置的软连接到环境中
/usr/bin/java
2.2.2 jenkins启动端口配置
vim /etc/sysconfig/jenkins
JENKINS_PORT="14444"
JENKINS_USER="root"
2.2.3 替换下载源
编辑/var/lib/jenkins/updates/default.json,
updates.jenkins-ci.org/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins,
www.google.com 编辑替换为 www.baidu.com
三、Docker安装
3.1 Docker安装
curl -fsSL https:
3.2 Docker镜像源配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6pf7s4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.3 项目中编写Dockerfile文件
FROM maven:3.8.4-jdk-11 AS builder
LABEL MAINTAINER="gaoyu"
ARG arg
WORKDIR /build/
COPY . /build/
COPY settings-docker.xml /usr/share/maven/conf/settings.xml
RUN mvn clean package -Dmaven.test.skip=true -P dev -U
FROM openjdk:11-jdk
WORKDIR /work
COPY --from=builder /build/gateway/target/gateway-1.0-SNAPSHOT.jar /work/information-gateway.jar
EXPOSE 20000
ENTRYPOINT ["java","-Xms1024m","-Xmx2048m","-jar","/work/information-gateway.jar"]
四、项目下的根目录下编写shell脚本(build.sh)
version=$1
param=$2
env=$3
if [[ -z $version ]]; then
echo -e "no version"
exit 1
fi
root_path=$(pwd)
all_dockerfile_path=$(find $root_path -name Dockerfile)
uuid=$(head -c 8 /dev/urandom | od -A n -t x | tr -d ' ')
function removeDocker() {
image_prefix=$1
for item in $(docker ps -aq --filter name="$image_prefix"-ins*:*); do
echo "The id of the container to delete is $item"
docker stop "$item"
docker rm "$item"
done
for item in $(docker images -q --filter reference="$image_prefix"*:*); do
echo "The id of the image to delete is $item"
docker rmi "$item"
done
}
function moduleHandle() {
module_name=$1
ip_suffix=$2
for module_path in ${all_dockerfile_path[*]}; do
dockerfile_path=${module_path##*$root_path/}
if [ -n "$dockerfile_path" ]; then
if [[ $dockerfile_path == *$module_name* ]]; then
removeDocker $module_name
docker build -f $dockerfile_path -t $module_name-"$version" --build-arg arg=$env .
docker run --name $module_name-ins-"$uuid" -d --network=information --ip 172.16.0.$ip_suffix $module_name-"$version"
fi
fi
done
}
function removeNoneImages() {
for item in $(docker images -f "dangling=true" -q); do
echo "The id of the image to delete is $item"
for ins in $(docker ps -aq --filter ancestor=$item); do
echo "docker of container-ins is $ins"
docker stop "$ins"
docker rm "$ins"
done
docker rmi "$item"
done
}
modules=('user_center' 'auth' 'gateway')
removeNoneImages
for i in $(seq 0 ${#modules[@]}); do
name=${modules[$i]}
if [[ $param == "all" ]]; then
moduleHandle $name 4$i
else
if [[ $param == $name ]]; then
moduleHandle $name 4$i
fi
fi
done
五、 jenkins项目配置

sh build.sh 1.0 all dev