Docker Composer – Development with Nginx, MySQL, and PHP

Docker Composer offers a robust solution for streamlining the deployment and management of complex applications. In this guide, we’ll explore how to leverage Docker Composer alongside Nginx, MySQL, and PHP to create a seamless development environment. Let’s dive in.

1. Setting the Stage: Understanding Docker Composer

Docker Composer is a powerful tool for defining and running multi-container Docker applications. It allows developers to specify the services, networks, and volumes required for an application using a single YAML file, simplifying the deployment process.

2. Crafting Your Docker Composer Configuration

Before diving into the setup process, let’s outline the necessary components of our Docker Composer configuration:

  • Nginx: A high-performance web server and reverse proxy.
  • MySQL: A reliable relational database management system.
  • PHP: A popular scripting language for server-side web development.

3. Configuring Docker Composer for Your Stack

To begin, create a docker-compose.yml file in your project directory and define the services:

version: ‘3’

services:
nginx:
image: nginx:latest
ports:
– “80:80”
volumes:
– ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
– php
– mysql

php:
image: php:latest
volumes:
– ./php:/var/www/html
depends_on:
– mysql

mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_mysql_user
MYSQL_PASSWORD: your_mysql_password

In this configuration, we’re specifying the services (Nginx, PHP, MySQL), defining port mappings for Nginx, mounting volumes for Nginx and PHP, and setting environment variables for MySQL.

4. Crafting Nginx Configuration

Next, let’s create an nginx.conf file in your project directory to customize Nginx configurations according to your needs:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
server {
listen 80;
server_name localhost;

    location / {
        root /var/www/html;
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

}

This configuration sets up Nginx to serve PHP files and proxies PHP requests to the PHP service container.

5. Building and Running Your Docker Environment

With your Docker Composer configuration and Nginx setup complete, it’s time to build and run your Docker environment. Navigate to your project directory and execute the following commands:

docker-compose build
docker-compose up -d

This will build your Docker images and start the containers in detached mode, allowing you to continue working without being tied to the terminal.

6. Verifying Your Setup

Once the Docker containers are up and running, you can verify the setup by accessing http://localhost in your web browser. If everything is configured correctly, you should see the default PHP info page.

7. Developing Your Application

With your Docker environment set up, you’re now ready to start developing your application. Simply place your PHP files in the php directory, and they’ll be served by Nginx.

8. Managing Your Docker Environment

Docker Composer makes it easy to manage your Docker environment. You can stop the containers using docker-compose down and start them again with docker-compose up -d. Additionally, you can view logs using docker-compose logs.

Unlock the Power of Docker Composer Today

By harnessing the capabilities of Docker Composer alongside Nginx, MySQL, and PHP, you can streamline your development workflow and create scalable, efficient applications. Embrace the power of containerization and take your development process to new heights. Start building with Docker Composer today!