はじめに
仕事でdockerを利用していたが、特に自分のPCと相性が悪く、1日30回くらいフリーズして仕事にならない状況だった。(同僚はそうでもなかった)
もちろんリソースは十分に割り当てていたのだがそれでもダメだったので、いろんな記事を参考にさせていただき、ようやく環境構築ができたのでメモ書きを残しておく
基本的にこちらの記事を参考にさせていただきました。ありがとうございました。
Mac上でDocker起動だけVagrant内で行い開発作業はすべてホスト側でするための手順
環境
・ macOS Catalina ver10.15.5
・ プロセッサ 2.6GHz 6コア Intel Corei7
・ メモリ 16GB 2400 MHz DDR4
・ ストレージ500GB
手順
VirtualBoxのインストール
Vagrantのインストール
Vagrant init
作業用のディレクトリを作成し、vagrant init を行う
$ mikdir -p ~/sample_vagrant_docker
$ cd ~/sample_vagrant_docker
$ vagrant init centos/7
vagrant-disksize プラグインを使って VM のディスク容量を増やす
VMの容量に不安があるので、あらかじめ増やすために vagrant-disksize プラグインをインストールする。
$ vagrant plugin install vagrant-disksize
Vagrantfile の編集
vagrant init に成功するとVagrantfileが作成されるので編集する
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
# プラグインのvagrant-disksize をインストールしておく
config.disksize.size = '100GB'
# メモリを増やしておく
config.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 2
end
# VM 上で初めから Docker を使えるようにしておく
config.vm.provision "docker"
# ホスト側にポートフォワーディングして web の画面をみれたりデータベースアクセスできたりするようにしておく
# guestのポートは適宜変更してください
config.vm.network "private_network", ip: "172.12.8.150"
config.vm.network "forwarded_port", host: 4000, guest: 3000 # Web用
config.vm.network "forwarded_port", host: 4306, guest: 27017 # DB用
# ホスト側の docker-compose.yml などのファイルを VM ないで参照するために共有しておく
# docker-compose.ymlなどのファイルはあらかじめ /Users/xxx/sample_vagrant_docker/ に置いておく
config.vm.synced_folder "/Users/xxx/sample_vagrant_docker/", "/home/vagrant/work", type: "nfs"
end
vagrant を立ち上げる
$ vagrant up
$ vagrant ssh
[vagrant@localhost ~]$
docker-compose のインストール
https://github.com/docker/compose/releases を参考にdocker-composeをVM環境にインストール
[vagrant@localhost ~]$ sudo curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[vagrant@localhost ~]$ sudo chmod +x /usr/local/bin/docker-compose
dockerコンテナを起動する
[vagrant@localhost ~]$ cd work
[vagrant@localhost my-project]$ docker-compose up -d
自分の環境の場合は未圧縮のDBのダンプファイルがあった関係で以下のエラーが発生したので、対象のファイル群を圧縮したら無事にdocker-compose up できた
ERROR: Error processing tar file(exit status 1): write /docker-conf/dump/mongo_dump/simulize_development/user_holding_assets.bson: no space left on device
適宜
これで環境はできたので、あとはDBの入れ替えなり必要な作業をvagrant内で行ってください