一键安装 harbor 脚本

此脚本基于 Ubuntu 1804 安装,具体需要根据实际情况进行测试调整

#!/bin/bash
#Description: Install harbor on ubuntu1804
#Author: xan_yum

COLOR="echo -e \e[1;31m"
END="\e[0m"
DOCKER_VERSION="5:19.03.15~3-0~ubuntu-bionic"
HARBOR_VERSION=1.7.6
IPADDR=`hostname -I|awk '{print $1}'`
HARBOR_ADMIN_PASSWORD=123456

install_docker(){
${COLOR}"Begin install docker-${DOCKER_VERSION}, Please wait..."${END}
sleep 1

dpkg -s docker-ce &> /dev/null && ${COLOR}"Docker already install,exit"${END} && exit
apt update
apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt update -y

${COLOR}"Docker has the following versions"${END}
sleep 2
apt-cache madison docker-ce
${COLOR}"In five seconds begin install: doecker-"${DOCKER_VERSION}"..."${END}
${COLOR}"If you want to install another version,please press Ctrl+c exit,modify version
"${END}
sleep 5

apt install docker-ce=${DOCKER_VERSION} docker-ce-cli=${DOCKER_VERSION} -y
mkdir -p /etc/docker
tee /etc/docker/daemon.json  &> /dev/null <<-'EOF'
{
  "registry-mirrors": ["https://eph8xfli.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl enable --now docker &> /dev/null
docker version && ${COLOR}"Docker install completion"${END} || ${COLOR}"Docker install failure"${END}
}

install_docker_compose(){
${COLOR}"Begin install docker compose..."${END}
sleep 1

curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

docker-compose version && ${COLOR}"Docker compose install completion"${END} || ${COLOR}"Docker compose install failure"${END}
}

install_harbor(){
${COLOR}"Begin install harbor..."${END}
sleep 1

wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v${HARBOR_VERSION}.tgz
mkdir /apps
tar xvf harbor-offline-installer-v1.7.6.tgz -C /apps

sed -i.bak -e 's/^hostname =.*/hostname = '''${IPADDR}'''/' -e 's/^harbor_admin_password =.*/harbor_admin_password = '''${HARBOR_ADMIN_PASSWORD}'''/' /apps/harbor/harbor.cfg

apt install python -y

/apps/harbor/install.sh && ${COLOR}"Harbor install completion"${END} || ${COLOR}"Harbor install failure"${END}
}

harbor_service(){
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 /apps/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable harbor.service && ${COLOR}"Harbor already set boot up"${END}
}

dpkg -s docker-ce &> /dev/null && ${COLOR}"Docker already install"${END} || install_docker

docker-compose version &> /dev/null && ${COLOR}"Docker compose already install"${END} || install_docker_compose

install_harbor

harbor_service