An open API service indexing awesome lists of open source software.

https://github.com/me-io/docker-machine-dev-php


https://github.com/me-io/docker-machine-dev-php

docker docker-machine php-docker

Last synced: 8 months ago
JSON representation

Awesome Lists containing this project

README

          

# docker-medev-machine

> Development machine for the backend team

We use docker as our main development environment, it helps us maintain consistency between dev and production environments, if this is your first steps into docker world, please read this article about docker and how different it is from virtual machines and then come back and proceed.

## 1. Installing the tools:
* first you need to install Homebrew and Cask, you can do so by running following commands in sequence 

```
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew doctor //this is just to make sure Homebrew installed successfully

brew tap caskroom/cask
brew install cask
```

* Then you need to install virtualbox, since our docker's setup relies on a virtual machine that is powered by virtualbox,
if you have it installed you can skip this step otherwise open up your terminal and run this command:
```
brew cask install virtualbox
```

* Then install docker and its tools
if you have it installed you can skip this step otherwise  run this command:
```
brew install docker docker-compose docker-machine
```

* Then install docker credentials helper 
if you have it installed you can skip this step otherwise run this command:
```
brew install docker-credential-helper
```

## 2. Prepare the workspace:
To create the workspace directory run the following command
```
mkdir ~/Workspace/medev
```
now lets make sure that we have the write permission on the workspace
```
sudo chmod 777 ~/Workspace/medev
```
now lets cd in
```
cd ~/Workspace/medev
```
now lets clone the `medev-machine` repository
```
git clone https://github.com/medev/medev-machine
```
cd to it 
```
cd medev-machine
```

> Make sure that you are on master branch

## 3. Creating the virtual machine:

* To create the virtual machine with the name `dev` using the following command
```
docker-machine create --driver virtualbox --virtualbox-cpu-count 4 --virtualbox-memory "8096" --virtualbox-disk-size "20000" dev
```
now lets make sure that the machine is running
```
docker-machine start dev
```

* Now lets do some clean up and preparations for mounting the projects properly by running these commands one after another
```
docker-machine stop dev
VBoxManage sharedfolder remove dev --name Users
VBoxManage sharedfolder add dev --name Users --hostpath /Users --automount
docker-machine start dev
```

* Now lets create the projects directories and mount them properly to NFS file system plus adding their DNS info to the hosts file
this can be done using the prepare.sh script, can be executed using the following command
```
sudo ./prepare.sh
```
to know your machine's ip address run the following command,
```
docker-machine ip dev
```
if the ip doesn't equal to 192.168.99.100, it means that something went wrong, you have to start over, otherwise continue

* Now you need to restart the virtual machine and remount the the project directories to the NFS
```
docker-machine restart dev
sudo ./prepare.sh
```

* If you already have a docker account you can skip signing up, otherwise got to [https://hub.docker.com](https://hub.docker.com) and create your account
after that run the following command and login with your credentials
```
docker login
```

now lets make sure that the the projects directories are mounted properly by running the script again
```
sudo ./prepare.sh
```

* Now lets prepare the env variables by running the below two commands one after another
```
docker-machine env dev
eval "$(docker-machine env dev)"
```

* Final step is to start the container and the services with the following command 
```
docker-compose up -d
```

* To ssh into the machine use the following command
```
ssh www-data@192.168.99.100 -p 2222
```