Creating an easily-distributable dev environment – Docker/Vagrant? [closed]

I’m trying to figure out how to go about making an easy way to distribute a “dev environment” for working with my organization’s WordPress site. We currently have a local Linux server running the WordPress site, and a VirtualBox image that is horribly out of date and a very poor representation of this server. We currently distribute this to team members for their local development, which causes lots of problems as the local image is often too different.

I’m not too worried about the database aspect of things; I’m thinking of just doing weekly dumps from the live server which can be imported by developers to keep their local up to date.

  • For some reason I can't restart a script
  • Integrating Docker-Machine with Amazon EC2
  • CI - build a NodeJS app using docker in docker
  • How to serve static files from a Dockerized Python web app?
  • Is the latest version of docker from Amazon on ec2 broken?
  • Selenium Test Execution in Docker with UI
  • I’m more interested in finding an easy to distribute a preconfigured stack to users on OSX or Windows that already has PHP/Apache/MySQL configured by me, a git client set up to pull all the static files on command–something the user can just run, then go to localhost:8000 to see it. I’d also like some way for them to edit the files that were pulled from the git repository.

    I’m currently looking into Docker and Vagrant but I’m not sure what’s more appropriate for this task—Docker seems like it would be more suited to Linux machines. I know Vagrant supports mapping external folders into the VM, which seems like it’d solve my problem, but I wanted to ask for more suggestions before I start learning Chef/Puppet/etc.

  • Push images to private docker registry error with 500
  • Connect to a service in docker, run from an interactive shell
  • Passing file as argument to Docker container
  • kafka image build kompose
  • Docker env missing with fabric8
  • The docker compose will remain legacy volumes and couldn't now clear them
  • One Solution collect form web for “Creating an easily-distributable dev environment – Docker/Vagrant? [closed]”

    I think both Vagrant and Docker may be used to solve your problem.
    Vagrant may be more adequate to share the environment with Windows/mac machines, but integration with Docker in these systems are better day-by-day using tools such as boot2docker.
    Docker by contrast requires using a moder Linux Kernel or one of these tools.

    If I had to develop the Vagrant option, I would setup a machine with all the dependencies installed in the same machine. To install you can use one of the provisioners available in Vagrant (e.g.: Chef, Puppet). This may be easier if you have previous experience with them and/or if you are not very keen on bash. There are a lot of examples you can check to see how you can do it, such as

    Using Docker is also a very good option. Answering your question, you can share any local folder of the host machine with a container (using the docker run option -v or --volume). In this case I would run each of the services you want to provide (i.e.: php server, MySQL, Apache..) as independent containers, and linking them using the docker run option --link. Programming your Dockerfiles to build this containers may result more difficult than if you were using Chef or Puppet (although you could use them to build the containers, the integration is not as good as with Vagrant). But with Docker you can take advance of all the apps ready to use you have available in the Docker Hub. Also I would recommend you a docker tool called fig ( that let running a container cluster linking and configuring the services easily, and it’s allow to manage all the containers in a very comfortable way. Again you can find very illustrative examples of this user case over the internet, as for example

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.