Setting up PHP environment with Docker. The 1 minute guide.
The PHP SDK allows developers a smooth integration wrapping all the API calls needed to integrate with DRUID platform.
But in any case, in order to run the PHP SDK you will need to use a PHP interperter, normally installed in a web server like Apache.
You allways can install the library manually if your development environment is compatible with the php SDK requirements, but in case of the version of the interpreter is different or you still do not have the environment ready and do not have an idea of how Docker can help with your develelopment environment setup, this guide might be very helpful for you to integrate with DRUID.
One of the main benefits of Docker, is the ability to help developers in the sharing and distribution of ready for use development environments.
Thus, a developer can configure a Docker image once and easily share the development environment for a project to their colleagues as well as extend and version the necessary settings, saving the rest of the team a lot of headaches while configuring environments or updating them.
Following this message, we think it might be a good idea to release an Docker image with everything needed to run DRUID php SDK. The druidcom/php-5.6-apache is published in Docker Hub, as open source. The entire project is available on GitHub
After following this guide, you should have the DRUID php SDK running in your own environment with Docker.
1. Install Docker
- For Windows/OSX users, download Docker Toolbox.
- For Linux users, install Docker from here.
For troubleshooting during installation, use this Windows, Linux or OSX guide.
2. Open a Terminal window
Windows/OSX:
Open the installed program “Docker quickstart terminal“. This will initialize the VirtualBox VM and perform some setup for you.
Linux:
Open a terminal.
3. Run hello-world example:
On the previously opened terminal, run the following.
docker run hello-world
If everything goes well, you should see something like this:
Unable to find image 'hello-world:latest' locally Pulling repository hello-world 91c95931e552: Download complete a8219747be10: Download complete Status: Downloaded newer image for hello-world:latest Hello from Docker. This message shows that your installation appears to be working correctly.
4. Execute the druidcom/sdk-v1.0.6_php7.1_apache Image
Windows:
In the “Docker quickstart terminal“, run the druidcom/sdk-v1.0.6_php7.1_apache image using the following command. Docker will attempt to run it and if it is not available it will download it:
You will have to replace with your Windows user name.
docker run -d -v "/c/Users//www:/var/www" -p 80:80 druidcom/sdk-v1.0.6_php7.1_apache
Linux:
In the terminal, run the druidcom/sdk-v1.0.6_php7.1_apache image using the following command. Docker will attempt to run it and if it is not available it will download it:
docker run -d -v "/opt/druid:/var/www" -p 80:80 druidcom/sdk-v1.0.6_php7.1_apache
OSX:
In the “Docker quickstart terminal“, run the druidcom/sdk-v1.0.6_php7.1_apache image using the following command. Docker will attempt to run it and if it is not available it will download it:
You will have to replace with your OSX user name.
docker run -d -v "/Users//www:/var/www" -p 80:80 druidcom/sdk-v1.0.6_php7.1_apache
Docker Compose
If you want to execute image easily, use docker-compose.
- make a folder where files will be stored
- download https://raw.githubusercontent.com/dru-id/druid-php-docker/master/docker-compose.yml inside folder created above
- go to folder and type (make sure port 80 is not already in use, if so you can edit the docker-compose.yml):
docker-compose up -d
5. Understanding the parameters
The -v parameter is creating a volume between your host folder and the Document Root of the Apache server of the image located at /var/www .
The -p parameter is mapping the host port with image port using this syntax: : Use a different port in case of port 80 of your host is already in use.
Note: Using a different port other than 80 for this guide, will cause that callback URL’s wont work.
The -d parameter is running the image as a daemon.
6. Ensure the image is running
If everything goes well with the image, no errors will be shown and you will have again the control of the command prompt. To ensure the image is running, type the following:
docker ps
This will show all running images in your system:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db04877b4e32 druidcom/php-5.6-apache "/bin/sh -c druid-ini" 2 minutes ago Up 2 minutes 0.0.0.0:85->80/tcp kickass_davinci
7. Edit your hosts file
DRUID PHP SDK needs to be running on the same URL defined via Cockpit apps configurator. By default, is configured using examples.dev.dru-id.com, so yo will need to add this URI to the host file.
Linux:
Open a terminal and execute the following:
echo '127.0.0.1 examples.dev.dru-id.com' | sudo tee -a /etc/host's
Windows:
At this moment, you will have your Docker image running in your environment, but you will need to know which is the ip of the network adapter that is using the VM in order to run the examples in a browser.
On the “Docker quickstart terminal” prompt, type the following:
docker-machine ip
This will return the ip of the network adapter that is using the VM. So in that ip the library is published.
This will return the ip of the network adapter that is using the VM. So that is the ip you will need to add to your host file.
-
- Press the Windows key.
- Type Notepad in the search field.
- In the search results, right-click Notepad and select Run as administrator.
- In Notepad, open the following file: c:\Windows\System32\Drivers\etc\ hosts
- Add the following line: examples.dev.dru-id.com
-
- Ensure that is the ip previously obtained after running docker-machine ip command.
-
- Click File > Save to save your changes.
OSX:
At this moment, you will have your Docker image running in your environment, but you will need to know which is the ip of the network adapter that is using the VM in order to run the examples in a browser. On the “Docker quickstart terminal” prompt, type the following:
docker-machine ip default
This will return the ip of the network adapter that is using the VM. So that is the ip you will need to add to your host file.
- Open Applications > Utilities > Terminal.
- Open the hosts file by typing the following line in the terminal window: sudo nano /etc/ hosts
- Type your domain user password when prompted.
- Add the following new line: examples.dev.dru-id.com
- Ensure that is the ip previously obtained after running docker-machine ip command.
- Save the hosts file by pressing Control+x and answering y
- Make your changes take effect by flushing the DNS cache with the following command: dscacheutil -flushcache
8. Execute the library in a browser.
Open a browser and run https://examples.dev.dru-id.com
Now you have the DRUID php SDK running in your own environment with Docker.