Ich habe die Teamentwicklung mit Docker für Mac durchgeführt, aber es ist langsam. Beenden wir also Docker für Mac und starten eine virtuelle Umgebung, um eine explosive Docker-Umgebung zu erstellen! !! Ich kam zu.
Unter Linux wird VFS zwischen dem Host und dem Container gemeinsam genutzt, sodass keine Overhead-Reflexion erfolgt. Unter macOS (und anderen Nicht-Linux-Plattformen) ist der Aufwand für die vollständige Konsistenz jedoch erheblich ... Japanisches Docker-Dokument und andere Qiita-Artikel sagten das ebenfalls, aber ich verstehe nicht wirklich ... Derzeit scheint das Docker für Mac-Dateifreigabesystem nur langsam auf osxfs zu mounten. Der Hauptgrund ist, dass die OSX FS-Ereignis-API und die inotify-API von Linux zugeordnet sind. Langsame Ursache
Was ist der Unterschied zwischen "Docker für Mac" und der diesmal zu erstellenden Umgebung (Virtual Box + Docker)? Geben Sie Docker für Mac auf, wodurch DX erheblich reduziert wird, und erhalten Sie die schnellste Docker-Umgebung für Mac Der obige Artikel war sehr einfach zu verstehen! !! Die Abbildung ist hilfreich (; ∀ ;)
Mac OS Catalina 10.15.7
20.10.0-beta1
Vagrant 2.2.13
Ubuntu 18.04.5 LTS
Ich kann viele Schritte sehen, aber lasst uns unser Bestes geben ... (lacht)
Verwenden Sie Homebrew, um die erforderlichen Werkzeuge zu installieren. Homebrew-Installation
brew cask install virtualbox
brew cask install vagrant
Laden Sie die Vagrant Box (OS) herunter. (Es hat eine ganze Weile gedauert)
vagrant box add ubuntu/bionic64
Nachdem der Download abgeschlossen ist, können Sie ihn mit dem folgenden Befehl überprüfen
vagrant box list
ubuntu/bionic64 (virtualbox, 20200229.0.0)
Installieren Sie das erforderliche Vagrant Plugin. Ich werde später über Mutagen sprechen.
vagrant plugin install vagrant-disksize vagrant-hostsupdater vagrant-mutagen vagrant-docker-compose
Vagrant init im Entwicklungsverzeichnis
cd ~/my_app (In das Entwicklungsverzeichnis wechseln)
vagrant init ubuntu/bionic64 (Mit Vagabund initialisieren)
Der folgende Satz wird angezeigt, damit Sie eine Vagrantdatei erstellen können!
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Wir werden das Vagrantfile bearbeiten! !! !!
Bearbeiten Sie den Inhalt der Vagrant-Datei wie folgt!
config.vm.hostname
ist im Entwicklungsverzeichnis in Ordnung!
Wenn Sie nichts anderes verstehen
Vagrant-Befehl und Vagrantfile-Einstellungsnotiz
Es war leicht zu verstehen, wenn man sich die "Vagrantfile-Einstellungen" im obigen Artikel ansah. Vielen Dank(:_;)
~/my_app/Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = 'ubuntu/bionic64'
config.vm.hostname = 'my_app'
config.vm.network :private_network, ip: '192.168.50.10'
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.cpus = 4
vb.memory = 8192
vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
end
config.disksize.size = '30GB'
config.mutagen.orchestrate = true
config.vm.synced_folder './', '/home/vagrant/app', type: "rsync",
rsync_auto: true,
rsync__exclude: ['.git/', 'node_modules/', 'log/', 'tmp/', 'vendor']
config.vm.provision :docker, run: 'always'
config.vm.provision :docker_compose
end
Wenn der Pfad auf der Hostseite von config.vm.synced_folder auf "./" festgelegt ist, ist dies einfacher, da der Pfad für jede Arbeitsumgebung nicht neu geschrieben werden muss, wenn Arbeit freigegeben wird.
Damit ist die Vorbereitung von Vagrant + VirtualBox abgeschlossen.
Synchronisieren Sie die bearbeitete Datei zwischen Mac und Linux. Dies wird mit einem Tool namens Mutagen erreicht. Installieren Sie mutagen mit dem folgenden Befehl. (Dies hat auch Zeit gekostet)
brew install mutagen-io/mutagen/mutagen
Erstellen Sie nach der Installation eine mutagene Konfigurationsdatei mutagen.yml. Erstellen Sie es im selben Verzeichnis wie Vagrantfile.
~/my_app
touch mutagen.yml
Der Inhalt ist wie folgt.
~/my_app/mutagen.yml
sync:
app:
mode: "two-way-resolved"
alpha: "./"
beta: "my-app:/home/vagrant/app"
ignore:
vcs: true
paths:
- "/node_modules"
- "/log"
- "/tmp"
Starten Sie dann die VM mit $ vagrant up und Mutagen führt eine bidirektionale Dateisynchronisierung durch. Diese Synchronisation erfolgt bidirektional nahezu in Echtzeit und wird durch Übertragen von Dateien anstatt durch Mounten des Dateisystems erreicht, sodass beim endgültigen Mounten in einem Docker-Container fast kein Overhead entsteht.
Nach Ausführung des Befehls ,,,,, ist ein Fehler aufgetreten.
~my_app
vagrant up
/Users/hoge/.vagrant.d/gems/2.4.9/gems/vagrant-mutagen-0.1.2/lib/vagrant-mutagen/Mutagen.rb:22:in `initialize': No such file or directory @ rb_sysopen - /Users/hoge/.ssh/config (Errno::ENOENT)
Sie sagen, dass es keine Konfiguration gibt (Schweiß) Lass es uns machen! !!
~my_app
touch /Users/hoge/.ssh/config
Noch einmal! !!
~my_app
vagrant up
Diesmal scheint es gut gemacht zu sein ε- (´∀ ` *) Heiß
vagrant ssh
Dann, diesmal eine Art Update-Information ...
New release ''20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Du solltest das nicht tun.
vagrant box add ubuntu/bionic64
Es scheint notwendig zu sein, das Betriebssystem herunterzuladen, das fest mit der Version übereinstimmt, also ...
Der folgende Befehl ist ein Beispiel, wenn docker-compose.yml im Projektverzeichnis vorhanden ist.
cd app
docker-compose up