I'm looking to run a meteor server for development purposes inside a virtualbox guest running Ubuntu. The project would be inside a folder on the host that would be shared to the guest (the folder itself is inside a Dropbox folder - this way I can share development between multiple VMs and workstations, but that shouldn't hurt),
I've got networking set up on the guest through host-only adapter & NAT with SSH keys entered into putty for convenience + the guest's ip in the windows etc/hosts
file so the server is accessible locally on http://dev:3000
, this part is working out fine.
The virtualbox is running on Windows 7 so the catch is that Meteor won't start due to not being able to start Mongo which wants to create a lockfile (since the file would have to be on the windows host shared to guest through vboxfs).
If I move the project to a different folder then there's no longer a way to edit the files with an editor on the host. I tried playing with moving .meteor/local
folder out to an ext3 partition and connect with symlinks but this doesn't work for same reason lockfile can't be created.
So, anyone got suggestions on how to set this up?
UPDATE
I installed mongodb inside the ubuntu guest, but then when I attempted to run meteor
the startup broke because meteor seems to want to create symlinks inside the folder:
/home/bbozo/.meteor/tools/09b63f1ed5/lib/node_modules/fibers/future.js:173
throw(ex);
^
Error: EROFS, read-only file system '/media/sf_Shared/Dropbox/dev_uhurajr/chat/.meteor/local/.build320446.build/programs/server/npm/logging/main/node_modules'
Plan B would be something in the lines of @user3185338 answer which is a workable workaround but I'm kind of hoping there's a more elegant alternative to running a while loop with x second lag inside screen
UPDATE
Is there perhaps a way to tell meteor to move it's .meteor work folder without resorting to symlinks? Perhaps by setting up an application server in ubuntu something in the lines of apache/nginx + passenger?
I had the same goal and same issues with symlinks.
Here is what I did:
create and run a script of synchronisation on the guest (you will need perhaps to install rsync):
#!/bin/sh
#
while true;
do rsync -avt --delete <LIST OF DIRECTORY TO SYNC ex: ./client ./lib ./public ./server ./shared > <YOUR METEOR APP DIR IN THE HOST ex: ~/my_app/>;
sleep 5;
done
Hope it can help you
Have a look at the virtualized solutions over at http://win.meteor.com
VirtualBox shared folders (
vboxsf
devices) have a different device interface and are not supported for MongoDB data directories as at MongoDB 2.4.The workaround is to only have your application files using the shared folder.
There are a few different approaches you can use to move your MongoDB data files outside the shared folder:
1) Login to the VirtualBox VM and symlink .meteor/local/db/ to a directory that isn't a shared folder (eg
~/db
). This should allow you to share your app between systems and have a database local to the VM.2) Run
meteor
using an external MongoDB server (i.e. one running in the host environment rather than the VM) by setting theMONGO_URL
environment variable: