脚本一键部署docker-harbor
脚本下载链接
#!/bin/bash
#
#********************************************************************
#Author: chenjiahao
#QQ: 1938191576
#Date: 2022-10-19
#FileName: install_harbor.sh
#URL: https://www.placjh.com
#Description: The test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
VERSION=v2.6.1
DIR=/apps
PASSWORD=123456
find_docker_compose(){
docker --version &>/dev/null
if [ ! $? -eq 0 ];then
echo "请先安装docker"
exit
fi
docker-compose version &>/dev/null
if [ ! $? -eq 0 ];then
echo "没有安装docker-compose,开始自动为你下载"
curl -L https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose &>/dev/null
if [ ! $? -eq 0 ];then
echo "下载docker-compose失败,请重试"
rm -rf /usr/local/bin/docker-compose
exit
fi
chmod +x /usr/local/bin/docker-compose &>/dev/null
fi
}
download(){
if [ ! -f harbor-offline-installer-$VERSION.tgz ];then
wget https://github.com/goharbor/harbor/releases/download/$VERSION/harbor-offline-installer-$VERSION.tgz &>/dev/null
if [ ! $? -eq 0 ];then
echo "下载失败,请重试"
rm -rf harbor-offline-installer-$VERSION.tgz
exit
fi
fi
[ -d $DIR ] || mkdir $DIR
tar xf harbor-offline-installer-$VERSION.tgz -C $DIR/
}
install(){
if [ ! -f $DIR/harbor/harbor.yml ];then
if [ -f $DIR/harbor/harbor.yml.tmpl ];then
mv $DIR/harbor/harbor.yml.tmpl $DIR/harbor/harbor.yml
sed -i "s/hostname: reg.mydomain.com/hostname: `hostname -I|awk '{print $1}'`/" $DIR/harbor/harbor.yml
sed -i '/^https:/ s/^/#/' $DIR/harbor/harbor.yml
sed -i '/port: 443/ s/^/#/p' $DIR/harbor/harbor.yml
sed -i '/certificate:/ s/^/#/p' $DIR/harbor/harbor.yml
sed -i '/private_key/ s/^/#/p' $DIR/harbor/harbor.yml
sed -i "/harbor_admin_password:/ s/Harbor12345/$PASSWORD/" $DIR/harbor/harbor.yml
elif [ -f $DIR/harbor/harbor.cfg ];then
sed -i "s/hostname: reg.mydomain.com/hostname: `hostname -I|awk '{print $1}'`/" $DIR/harbor/harbor.cfg
sed -i '/^https:/ s/^/#/' $DIR/harbor/harbor.cfg
sed -i '/port: 443/ s/^/#/p' $DIR/harbor/harbor.cfg
sed -i '/certificate:/ s/^/#/p' $DIR/harbor/harbor.cfg
sed -i '/private_key/ s/^/#/p' $DIR/harbor/harbor.cfg
sed -i "/harbor_admin_password:/ s/Harbor12345/$PASSWORD/" $DIR/harbor/harbor.cfg
else
echo "没有找到配置文件,部署失败"
exit
fi
fi
. /etc/os-release
if [ $ID = "ubuntu" ];then
apt -y install python3 &>/dev/null
elif [ $ID = "centos" -o "rocky" ];then
yum -y install python3 &>/dev/null
else
echo "请先手动安装python"
exit
fi
cd $DIR/harbor
./install.sh &>/dev/null
if [ ! $? -eq 0 ];then
echo "安装失败"
rm -rf harbor-offline-installer-$VERSION.tgz
exit
fi
}
system(){
cat > /lib/systemd/system/harbor.service <<-EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f $DIR/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f $DIR/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload &>/dev/null
systemctl enable harbor &>/dev/null
systemctl restart harbor &>/dev/null
ss -ntl |grep 80 &>/dev/null
if [ $? -eq 0 ];then
echo -e "请访问:\E[32;1mhttp://`hostname -I |awk '{print $1}'`\E[0m"
echo -e "用户名:\E[32;1madmin\E[0m"
echo -e "密 码:\E[32;1m$PASSWORD\E[0m"
else
echo "启动失败"
fi
}
find_docker_compose
download
install
system