🐳
Vagrant + Dockerの環境でDocker Compose CLIを使う
背景
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
ファイルにdocker
と docker 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においてあります。
Discussion