vagrant 提供了 provision 初始化功能,可以類似 Dockerfile 在初始化 vagrant 的時候就把想要安裝的內容處理好,下面示範一下如何安裝一個乾淨的 ubuntu 後把 docker 以及 docker-compose 一併安裝。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
config.vm.provision "shell", inline: <<-SHELL
docker -v &> /dev/null
if [[ $? != 0 ]]; then
echo "start install docker"
curl -sL https://get.docker.com/ | sudo bash
sudo usermod -aG docker vagrant
docker -v
else
echo "docker installed"
fi
docker-compose -v &> /dev/null
if [[ $? != 0 ]]; then
echo "start install docker-compose"
sudo curl -sL "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose -v
else
echo "docker-compose installed"
fi
SHELL
end
由於 provision 有可能重複使用,所以最一些執行檢查是必要的,這邊我檢查已安裝的技巧是使用 -v
這個參數,如果沒有安裝,系統會報錯,因此 $?
會非 0,藉此判斷有沒有安裝過。
沒有留言:
張貼留言