Php Docker Install Composer

FROM php:7.4-fpm # Copy composer.lock and composer.json COPY composer.lock composer.json /var/www/ # Set working directory WORKDIR /var/www # Install dependencies RUN apt-get update && apt-get install -y build-essential libpng-dev libjpeg62-turbo-dev libfreetype6-dev locales zip jpegoptim optipng pngquant gifsicle vim unzip git curl # Clear cache RUN apt-get clean && rm. Composer is a dependency manager written in and for PHP.

Written on October 13th, 2017 by Karl Hughes

Package management is a method for importing code (often from open sourcelibraries) and keeping dependencies up to date in a software developmentproject. In PHP, we have a couple ways to manage packages, but the dominantchoice for modern PHP development is Composer.

While you can install PHP and Composer on your local machine directly, in thistutorial we’ll use Docker, which allows us to run PHP and Composer scriptswithout configuring either on our system directly. If you haven’t already, youshould install Docker for your operatingsystem.

Creating a PHP Timer Script

We are going to write a PHP script that sleeps for between 1 and 3 seconds, thentells us how long it waited. It’s very simple using the PHP Timerpackage, but we’ll need toimport it.


Create a new file called composer.json and add the following to it:


This tells Composer about our dependencies — in this case, just one package —when we run the install command.

Installing the Dependencies

Next, we will install the dependencies using the official Composer Dockerimage:

Let’s look at this docker command and see what’s going on:

  • docker run is Docker’s command to run a command within a newcontainer. There are a lot ofoptions that you can pass in, so be sure to read the documentation.
  • --rm tells Docker to “remove” the container after the command is run.Alternatively, you can save the container and name it to run it again.
  • -v $(pwd):/app is telling Docker to mount avolume. You typicallypass in a path to a folder on your root directory, a colon, and then a path tothe folder in the container. Here we are mounting the current directory (alongwith the composer.json file we created) into a container. This mounting goesboth ways, so we will also see the /vendor folder created when Composer runs.
  • composer/composer:latest is the actual image we’re using for this container.This will install the packages for PHP 7, but Composer also has images for olderversions of PHP.
  • install is the Composer command that is going to be run. You can also doupdate or dump-autoload in this same manner.
Php docker install composer tutorialPhp docker install composer download

Now all the dependencies are installed in a new /vendor folder, but we stillhave to import them and write our PHP script.

The PHP Script

Our PHP script imports the dependencies that are included in Composer’svendor/autoload.php file, starts a timer, waits between 1 and 3 seconds, thenoutputs the final time that the script took to run. This part of the tutorialworks the same way whether you use Docker or not. This file should be namedindex.php:

Running the PHP Script

Finally, we just need to run the new PHP script we created in another Dockercontainer. This is covered in more detail in our tutorial on running PHP scriptsin Docker, but the final command should be:

You should see either 1 second, 2 seconds, or 3 seconds on your terminaloutput.

Learn to build your first Dockerized PHP application.

In this book, PHP developers will learn everything they need to know to start building their applications on Docker, including:

  • Installing dependencies using Composer.
  • Getting data from a third-party API.
  • Saving data to a MySQL database.
  • Using a web framework (SlimPHP) for routing.
  • Storing environmental variables securely.
  • And much more!

You can buy this book on Leanpub today.

MVC Skeleton Application

If you want to use zend-mvc to build Model-View-Controller (MVC) applications, we recommend you start with our skeleton application.

Docker Install Composer Php Ubuntu

Install a 64 bits php version somewhere on your computer (let's say in C:/php64). Docker-compose -f.docker/docker-compose.yml exec php env COMPOSERMEMORYLIMIT. MELPA (Milkypostman’s Emacs Lisp Package Archive). Up-to-date packages built on our servers from upstream source; Installable in any Emacs with 'package.el' - no local version-control tools needed. Our PHP service looks different because to connect PHP to the database using mysqli we need to install some mysqli stuff. That means we need to use a Dockerfile to customize our php7.4-apache image. So now we're using 'build' to use the contents of the current directory (the dot) and using our Dockerfile to create the image.

Installation using Composer

The easiest way to create a new Zend Framework project is to use Composer. If you don't have it already installed, then please install it per their documentation.

To create your new Zend Framework project:


Once installed, you can test it out immediately using PHP's built-in web server:

This will start the PHP cli-server on port 8080, and bind it to all network interfaces.

Note: The built-in CLI server is for development only.

Using Vagrant

Docker Install Composer Php Installer

This skeleton includes a Vagrantfile based on Ubuntu 14.04, and using the ondrej/php PPA to provide PHP 7.0. Start it up using:

Docker Install Windows

Once built, you can also run composer within the box. For example, the following will install dependencies:


While this will update them:

While running, Vagrant maps your host port 8080 to port 80 on the virtual machine; you can visit the site at http://localhost:8080/

Using docker-compose

Docker Install Composer Php Plugin

Php Docker Install Composer Download

The skeleton also provides a docker-compose.yml for use with docker-compose; it uses the Dockerfile provided as its base. Build and start the image using:

At this point, you can visit http://localhost:8080 to see the site running.

Php Docker Install Composer Software

Docker Php-fpm Install Composer

Docker-compose Install

You can also run composer from the image. The container environment is named 'zf', so you will pass that value to docker-compose run: