Development environment

Hey there,

We are currently working with MacOS X and 16gb of ram with the local installation of Vagrant / Virtual Box. This set up works to slow for us. So, here’s my question what are you are using for development?

We where thinking about replacing Vagrant with Docker. Do you know if this would work faster? Any hints would be great.

Thanks in advance :wink:

I can’t answer your question specifically (I use Linux), but this might be worth a read:

https://medium.com/@sean.handley/how-to-set-up-docker-for-mac-with-native-nfs-145151458adc

I know there are some performance issues around the way OSX handles files in virtual environments.

1 Like

Thank you, I’ll definetly look into it

I use Vagrant / VirtualBox when I have to (e.g. consulting on sites I didn’t build) but also find it very slow. Haven’t tried Docker. For my own sites I use a local stack installed with homebrew, which includes a command line utility for switching PHP version and enabling or disabling xdebug. I love the performance, but obviously the tradeoff is that I’m not getting 1:1 production environment emulation.

1 Like

Internally at Silverstripe Ltd, we suggest Vagrant as our boilerplate dev environment. Our go-to vagrant box is silverstripeltd/dev-ssp which is meant to mimic Silverstripe Cloud platform as much as possible.

However, various staff members have different preferences. I for one, use Ubuntu on my main work station and run everything natively.

This sound like a reasonably well powered machine. It might be worthwhile seeing if it’s especially slow on specific requests. Their might be some performance issue to diagnose … some time the upside of having a slow dev environment is that you notice of your code has performance issue :wink:

2 Likes

We use vagrant and don’t find the performance too much of an issue - certainly more overhead than just native but useful when a larger team all needs to be on the same page. Using NFS to mount the code directory is pretty key to this - needs the vagrant plugin bindfs

  # Configure webroot and mount options
  # See https://github.com/gael-ian/vagrant-bindfs
  if Vagrant.has_plugin?("vagrant-bindfs") then
    # Useful for OSX (for optimal performance)
    config.vm.synced_folder WEBROOT_HOST, "/vagrant-nfs", type: "nfs"
    config.bindfs.bind_folder "/vagrant-nfs", WEBROOT_GUEST,
    force_user:   'vagrant',
    force_group:  'vagrant',
    perms:        'u=rwX:g=rD:o=rD',
    o:            'nonempty'
  else
    # For Windows and Linux
    config.vm.synced_folder WEBROOT_HOST, WEBROOT_GUEST, type: "nfs"
  end
1 Like