🐳

Vagrant + Dockerの環境でDocker Compose CLIを使う

2021/09/19に公開

背景

Laravel等のPHPウェブシステム開発ではDocker for Macが遅い問題があり、Vagrant上に立てたDockerコンテナで開発を行うことが多い。

その際に最近リリースされたDocker compose CLIを使いたい。

そこそこ詰まった&&ネット上にあまり情報がなかったのでメモ。

環境

  • macOS Catalina
  • Virtual box 6.1
  • Vagrant 2.2.14
  • Ubuntu 20.04 (Vagrant上に立てるVM)
  • Docker 20.10.8

実装

Vagrantファイルにdockerdocker composeコマンドをインストールするスクリプトを追加。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
    # Sync Directory
    config.vm.synced_folder "/path/to/host/sync/dir", "/home/vagrant/workspace", create:"true", mount_options: ['dmode=777','fmode=777']
    # Mapping ports
    config.vm.network "forwarded_port", guest: 8000, host: 8000
    config.vm.network "forwarded_port", guest: 3306, host: 3306
    config.vm.network "forwarded_port", guest: 8080, host: 8080
    config.vm.network "forwarded_port", guest: 4572, host: 4572
    config.vm.network "private_network", ip: "192.168.33.10"
    # Start ssh agent
    config.vm.provision "shell", run: "always", inline: <<-SHELL
    echo 'eval `ssh-agent`' > /home/vagrant/.bash_profile
  SHELL
  # setup
  config.vm.provision "shell", inline: <<-SHELL
    apt-get -y upgrade
    apt-get -y update
    # docker, docker compose
    curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh
    curl -fsSL https://github.com/docker/compose-cli/releases/download/v2.0.0-beta.3/docker-compose-linux-amd64 -o .docker/cli-plugins/docker-compose --create-dirs
    chmod 755 .docker/cli-plugins/docker-compose
    chown -R vagrant:vagrant .docker
    usermod -aG docker vagrant
    gpasswd -a vagrant docker
    systemctl enable --now docker
    systemctl restart docker
    echo 'eval `ssh-agent`' > /home/vagrant/.bash_profile
  SHELL
  config.vm.box = "bento/ubuntu-20.04"
end

解説

Shell Scriptからdockerコマンドをインストール
※本番環境ではインストールスクリプトの使用は非推奨 [1]

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Docker compose CLIをインストール
※現状インストールスクリプトではインストールできない模様 [2]

curl -fsSL https://github.com/docker/compose-cli/releases/download/v2.0.0-beta.3/docker-compose-linux-amd64 -o .docker/cli-plugins/docker-compose --create-dirs
chmod 755 .docker/cli-plugins/docker-compose

権限の調整と
docker, docker compose コマンドをvagrantユーザーでも使用できるようにする。

chmod 755 .docker/cli-plugins/docker-compose
chown -R vagrant:vagrant .docker
usermod -aG docker vagrant
gpasswd -a vagrant docker

結言

記事へのご指摘歓迎

補足

VagrantファイルはGithubにおいてあります。

脚注
  1. https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script ↩︎

  2. https://github.com/docker/compose-cli/issues/1781 ↩︎

GitHubで編集を提案

Discussion