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.

  • docker deploy to docker for mac swarm mode not working, how to troubleshoot?
  • Unable to access web application in Docker container via container's ip and exposed port over http
  • mount points added to the host don't show up in a running docker container
  • Accessing virtual com ports inside a WS2016 docker container
  • Updating code in a docker container
  • $ bundle install --path /cache Could not locate Gemfile
  • 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.

  • How can I access a container on boot2docker through the web browser?
  • Jetty Docker container running spring application unable to connect to mysql running outside docker container
  • Is there a way to stop a command in a docker container
  • Not able to run the default hello-world program in docker on Windows 7
  • How to customize the docker gcc command and add own path instead of /usr/src
  • Docker tcp lookup fails
  • 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 https://github.com/r8/vagrant-lamp

    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 (www.fig.sh) 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 https://github.com/kasperisager/phpstack

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