Je faisais du développement en équipe avec Docker pour Mac, mais c'est lent, alors arrêtons Docker pour Mac et démarrons un environnement virtuel pour créer un environnement Docker explosif! !! Je suis venu à.
Sous Linux, VFS est partagé entre l'hôte et le conteneur, garantissant l'absence de réflexion de surcharge. Cependant, sur macOS (et d'autres plates-formes non Linux), il y a une surcharge importante pour une cohérence totale ... Document japonais Docker et d'autres articles Qiita l'ont également dit, mais je ne comprends pas vraiment ... Pour le moment, le système de partage de fichiers Docker pour Mac semble lent à monter sur osxfs. La raison principale est que l ’API OSX FS Events et l’ API inotify de Linux sont mappées. Cause lente
Quelle est la différence entre Docker pour Mac et l'environnement (Virtual Box + Docker) à construire cette fois
?
Abandonner Docker pour Mac, ce qui réduit considérablement le DX, et obtenir l'environnement Docker le plus rapide pour Mac
L'article ci-dessus était extrêmement facile à comprendre! !! La figure est utile (; ∀ ;)
Mac OS Catalina 10.15.7
20.10.0-beta1
Vagrant 2.2.13
Ubuntu 18.04.5 LTS
Je peux voir de nombreuses étapes, mais faisons de notre mieux ... (rires)
Utilisez Homebrew pour installer les outils nécessaires. Installation Homebrew
brew cask install virtualbox
brew cask install vagrant
Téléchargez la Vagrant Box (OS). (Cela a pris un certain temps)
vagrant box add ubuntu/bionic64
Une fois le téléchargement terminé, vous pouvez le vérifier avec la commande suivante
vagrant box list
ubuntu/bionic64 (virtualbox, 20200229.0.0)
Installez le plugin Vagrant requis. Je parlerai du mutagène plus tard.
vagrant plugin install vagrant-disksize vagrant-hostsupdater vagrant-mutagen vagrant-docker-compose
Vagrant init dans le répertoire de développement
cd ~/my_app (Déplacer vers le répertoire de développement)
vagrant init ubuntu/bionic64 (Initialiser avec vagrant)
La phrase suivante apparaîtra, vous pouvez donc créer un vagrantfile!
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.
Nous éditerons le Vagrantfile
! !! !!
Modifiez le contenu du fichier Vagrant comme suit!
config.vm.hostname
est OK dans le répertoire de développement!
Si tu ne comprends rien d'autre
Commande Vagrant et mémo de paramétrage Vagrantfile
C'était facile à comprendre en regardant "Paramètres Vagrantfile" dans l'article ci-dessus. Merci(:_;)
~/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
Si le chemin du côté hôte de config.vm.synced_folder est défini sur " ./ "
, ce sera plus facile car il n'est pas nécessaire de réécrire le chemin pour chaque environnement de travail lors du partage de travail.
Ceci termine la préparation de Vagrant + VirtualBox.
Synchronisez le fichier modifié entre Mac et Linux. Ceci est réalisé avec un outil appelé Mutagen. Installez mutagen avec la commande suivante. (Cela a également pris du temps)
brew install mutagen-io/mutagen/mutagen
Après l'installation, créez un fichier de configuration mutagen mutagen.yml. Créez-le dans le même répertoire que Vagrantfile.
~/my_app
touch mutagen.yml
Le contenu est le suivant.
~/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"
Ensuite, démarrez la VM avec $ vagrant up et Mutagen effectuera une synchronisation de fichier bidirectionnelle. Cette synchronisation est bidirectionnelle, quasiment en temps réel, et est obtenue en transférant des fichiers plutôt qu'en montant le système de fichiers, de sorte qu'il n'y a pratiquement pas de frais généraux une fois monté dans un conteneur Docker.
Une erreur s'est produite après l'exécution de la commande ,,,,,
~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)
Vous dites qu'il n'y a pas de config
(sueur)
Faisons-le! !!
~my_app
touch /Users/hoge/.ssh/config
encore une fois! !!
~my_app
vagrant up
Cette fois, il semble que cela a été bien fait ε- (´∀ ` *) Chaud
vagrant ssh
Puis, cette fois, une sorte de mise à jour des informations ...
New release ''20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Tu ne devrais pas faire ça.
vagrant box add ubuntu/bionic64
Il semble qu'il soit nécessaire de télécharger fermement l'OS qui correspond à la version, donc ...
La commande suivante est un exemple lorsque docker-compose.yml existe dans le répertoire du projet.
cd app
docker-compose up