takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Vagrant で ubuntu 22.04 + Docker 開発環境

基本的に下記記事の手順で作成可能です

takaya030.hatenablog.com

Vagrantfile の内容が一部異なるので Vagrantfile のみ記載します
docker compose v1 は開発が停止しているためインストールしないようにしました
最新の docker では docker compose v2 がデフォルトで組み込まれています

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/jammy64"

  config.vm.box_check_update = false

  config.vm.network "private_network", ip: "192.168.33.11"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  
    # Customize the amount of memory on the VM:
    vb.memory = "2048"
  end

  config.vm.provision :docker

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update -y

    gpasswd -a vagrant docker

    mkdir -p /etc/systemd/system/docker.service.d
    touch /etc/systemd/system/docker.service.d/options.conf
    echo '[Service]' > /etc/systemd/system/docker.service.d/options.conf
    echo 'ExecStart=' >> /etc/systemd/system/docker.service.d/options.conf
    echo 'ExecStart=/usr/bin/dockerd -H unix://' >> /etc/systemd/system/docker.service.d/options.conf

    touch /etc/docker/daemon.json
    echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"3"}}' > /etc/docker/daemon.json
    chmod 600 /etc/docker/daemon.json

    systemctl daemon-reload
    systemctl restart docker

    if [ ! -d "/home/vagrant/google-cloud-sdk" ]; then
      curl https://sdk.cloud.google.com > /tmp/install.sh
      sudo -u vagrant -i bash /tmp/install.sh --disable-prompts --install-dir=/home/vagrant
      sudo -u vagrant -i echo '# The next line updates PATH for the Google Cloud SDK.' >> /home/vagrant/.bashrc
      sudo -u vagrant -i echo 'if [ -f '\\''/home/vagrant/google-cloud-sdk/path.bash.inc'\\'' ]; then . '\\''/home/vagrant/google-cloud-sdk/path.bash.inc'\\''; fi' >> /home/vagrant/.bashrc
      sudo -u vagrant -i echo '# The next line enables shell command completion for gcloud.' >> /home/vagrant/.bashrc
      sudo -u vagrant -i echo 'if [ -f '\\''/home/vagrant/google-cloud-sdk/completion.bash.inc'\\'' ]; then . '\\''/home/vagrant/google-cloud-sdk/completion.bash.inc'\\''; fi' >> /home/vagrant/.bashrc
      rm -vf /tmp/install.sh
    fi
  SHELL
end

参考サイト

cloud.google.com

変更履歴