Facebook Twitter Instagram
    TecAdmin
    • Home
    • FeedBack
    • Submit Article
    • About Us
    Facebook Twitter Instagram
    TecAdmin
    You are at:Home»Docker Tutorials»How to Deploy PHP, Apache, and MySQL with Docker Compose

    How to Deploy PHP, Apache, and MySQL with Docker Compose

    By RahulMay 23, 20233 Mins Read

    Setting up a local development environment that includes PHP, Apache, and MySQL can be a complex task. However, with the power of Docker and Docker Compose, this process becomes significantly easier and more efficient. In this article, we’ll walk you through the step-by-step process of deploying PHP, Apache, and MySQL using Docker Compose. We’ll cover the necessary configuration, provide examples, and showcase sample outputs along the way.

    Advertisement

    Prerequisites

    Before getting started, make sure you have Docker and Docker Compose installed on your system. You can download and install Docker from the official Docker website (https://www.docker.com/) and Docker Compose from the Docker Compose documentation (https://docs.docker.com/compose/install/). Once you have both installed, you’re ready to proceed.

    Step 1: Setting Up the Docker Compose File

    Create a new directory for your project and navigate into it using your terminal or command prompt. Inside this directory, create a new file called `docker-compose.yml` and open it with a text editor of your choice. This file will contain the configuration for our PHP, Apache, and MySQL services.

    Here’s a sample `docker-compose.yml` file:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    version: '3'
    services:
      php:
        build:
          context: .
          dockerfile: Dockerfile
        volumes:
          - ./src:/var/www/html
        ports:
          - 8080:80
        depends_on:
          - mysql
      mysql:
        image: mysql:latest
        environment:
          MYSQL_ROOT_PASSWORD: secret
          MYSQL_DATABASE: mydatabase
          MYSQL_USER: myuser
          MYSQL_PASSWORD: mypassword
        volumes:
          - mysql_data:/var/lib/mysql
    volumes:
      mysql_data:

    In this configuration, we define two services: `php` and `mysql`. The `php` service is responsible for running our PHP code using Apache, and the mysql service is for our MySQL database. The `volumes` section mounts the src directory (where our PHP code resides) to the `/var/www/html` directory inside the php service container. The `ports` section maps port 8080 on the host machine to port 80 inside the php service container. The `depends_on` section ensures that the mysql service starts before the php service to establish the necessary connection.

    Step 2: Creating a Dockerfile

    Next, we need to create a Dockerfile that defines the environment for our PHP and Apache service. In the same directory as the `docker-compose.yml` file, create a new file called `Dockerfile` and open it with a text editor.

    Here’s a sample Dockerfile:

    1
    2
    FROM php:7.4-apache
    COPY src/ /var/www/html/

    This `Dockerfile` uses the official PHP image with Apache as the base image. It copies the contents of the `src` directory (where our PHP code resides) into the `/var/www/html/` directory inside the container.

    Step 3: Building and Running the Docker Compose Services

    Now that we have our `docker-compose.yml` file and Dockerfile in place, we can build and run the Docker Compose services. In your terminal or command prompt, navigate to the project directory (where the docker-compose.yml file is located) and run the following command:

    docker-compose up -d 
    

    This command starts the services defined in the `docker-compose.yml` file in detached mode (in the background). Docker Compose will automatically build the php service using the Dockerfile and pull the MySQL image from Docker Hub if it’s not already available locally.

    Step 4: Verifying the Deployment

    Once the services are up and running, we can verify the deployment by accessing the PHP application in our web browser. Open your preferred web browser and visit http://localhost:8080. You should see your PHP application running successfully.

    Conclusion

    In this article, we explored the process of deploying PHP, Apache, and MySQL using Docker Compose. We covered the configuration in the `docker-compose.yml` file, provided a sample `Dockerfile`, and demonstrated the deployment process. Docker Compose simplifies the setup and management of complex development environments, making it easier to work with PHP, Apache, and MySQL. With this knowledge, you can now effortlessly set up and deploy your PHP projects using Docker Compose.

    I hope this article helps you in setting up your PHP, Apache, and MySQL environment with Docker Compose. Happy coding!

    Docker Docker-compose Dockerfile
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email WhatsApp

    Related Posts

    Setting Up Environment Variables in Docker: A Comprehensive Guide

    How to Check if a Docker Image Exists Locally

    Difference between ENTRYPOINT and CMD in Dockerfile

    Add A Comment

    Leave A Reply Cancel Reply

    Advertisement
    Recent Posts
    • Setting Up Angular on Ubuntu: Step-by-Step Guide
    • Converting UTC Date and Time to Local Time in Linux
    • Git Restore: Functionality and Practical Examples
    • Git Switch: Functionality and Practical Examples
    • Git Switch vs. Checkout: A Detailed Comparison with Examples
    Facebook Twitter Instagram Pinterest
    © 2023 Tecadmin.net. All Rights Reserved | Terms  | Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.