+1

Docker Compose for Laravel project

In this article, I’ll introduce to you about: “Why we need to use Docker Compose?” and “How to use Docker Compose for your Laravel projects?“. We will try to use Docker Compose to see how it makes our life easier.

Original post: Docker Compose for Laravel project

I also assume that you had Docker and Docker Compose installed on your computer/laptop. If you don’t know how to install Docker and Docker Compose, you can visit their websites to follow their documents to install.

Document links:

Why do we need to use Docker Compose?

I faced many problems when my team working with a Laravel project that runs an old version of Laravel. It requires PHP version 5.4 and some specific extensions. We started to wonder: “How to keep the whole team run the same environment for this project?”.

Finally, I found that Docker Compose can help our life easier! That’s amazing! I only need to define a Docker Compose file and our team can get started with the project.

By using Docker Compose, we can:

  • Define the environment one time, use many times, anytime;
  • Keep environment consistent between computers/stages;
  • Isolate the running environment with the host computer for security reasons;
  • Give your team members peace of mind because of environment setup;

What is Docker Compose?

On the official website, they defined as below:

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

Overview of Docker Compose

That’s the truth! When you become familiar with Docker Compose, you will have more free time for your projects.

Let’s rock now

Firstly, open your terminal and clone the project docker-for-laravel that I already made. After clone project, go into this folder, you will have a folder with the structure as below:

    .
    ├── conf
    │   ├── nginx
    │   │   └── app.conf
    │   └── php
    │       ├── docker-php-ext-bcmath.ini
    │       ├── docker-php-ext-gd.ini
    │       ├── docker-php-ext-intl.ini
    │       ├── docker-php-ext-mysqli.ini
    │       ├── docker-php-ext-opcache.ini
    │       ├── docker-php-ext-pdo_mysql.ini
    │       └── php.ini
    ├── docker-compose.yml
    ├── .env
    ├── php.dockerfile
    ├── README.md
    └── src
        └── public
            └── index.php

Let’s go through each item:

  • Folder conf: contains configuration files for nginx and PHP;
  • Folder src: contains your source code – your project will put inside src folder;
  • File php.dockerfile: used to build PHP image – install extensions, install composer…;
  • File docker-compose.yml: all magics come from this file – defines services of your project;
  • File .env: set your project name and ports for nginx and phpMyAdmin;

Now, you can open .env file to change the project name and ports. After changed the project name, open conf/nginx/app.conf to change fastcgi_pass URL with a new PHP container name. Example, default project name in .env file is docker-laravel, so PHP container name will be docker-laravel-php (with “-php” suffix). The default content of app.conf will look like:

    server {
        location ~ \.php$ {
            fastcgi_pass docker-laravel-php:9000;
        }
    }

For example, I changed my project name in .env file to my-project, so my PHP container will be my-project-php. We need to change fastcgi_pass URL in app.conf to new PHP container name:

    server {
        location ~ \.php$ {
            fastcgi_pass my-project-php:9000;
        }
    }

That’s it! We can enjoy it right now. Several commands for you to rock:

  • Create containers: docker-compose up -d;
  • Remove containers: docker-compose down --remove-orphans;
  • Stop containers: docker-compose stop;
  • Start containers: docker-compose start;

Note: you can only run commands above in the folder contain docker-compose.yml.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí