DEV Community

Ehtesham Ali
Ehtesham Ali

Posted on

Dockerizing a Simple PHP Application

Containerization is a game-changer for developers seeking consistency and portability across different environments. In this blog post, we'll walk through a practical example of Dockerizing a simple PHP application. By the end of this guide, you'll have a working Docker container serving a basic PHP app.

Overview

We'll containerize a basic PHP application using Docker. Here’s the PHP code we'll use:

<?php
// index.php
echo "Hello Docker!";
?>
Enter fullscreen mode Exit fullscreen mode

The Dockerfile we’ll create will build an image using PHP 8.2 and serve this PHP application on port 8000.

Step-by-Step Guide

Step 1: Create the App Folder

Start by creating a new folder for your project. For this example, let’s name it php-docker-app. Inside this folder, add two files:

  • index.php - Contains the PHP application code.
  • Dockerfile - Defines the container configuration.

Step 2: Write the Dockerfile

Here’s the content of the Dockerfile:

# Use the official PHP image
FROM php:8.2-cli

# Set the working directory
WORKDIR /usr/src/app

# Copy the PHP file into the container
COPY index.php .

# Expose port 80 (optional for CLI-based serving, not necessary in this example)
EXPOSE 80

# Command to run the PHP server on port 8000
CMD ["php", "-S", "0.0.0.0:8000", "index.php"]
Enter fullscreen mode Exit fullscreen mode

Step 3: Build the Docker Image

Open a terminal and navigate to the folder containing your Dockerfile and index.php. Run the following command to build your Docker image:

docker build -t php-helloworld .
Enter fullscreen mode Exit fullscreen mode

This command does the following:

  • Uses the Dockerfile to build an image.
  • Tags the image with the name php-helloworld.

Step 4: Run the Docker Container

After successfully building the image, run a container from it using the command:

docker run -p 8000:8000 php-helloworld
Enter fullscreen mode Exit fullscreen mode

Here’s what happens:

  • The -p flag maps port 8000 on your host machine to port 8000 in the container.
  • Docker runs the php-helloworld image and starts a PHP server on port 8000.

Step 5: Access Your App

Open a browser or use a tool like curl to navigate to:

http://127.0.0.1:8000/
Enter fullscreen mode Exit fullscreen mode

You should see the following output:

Hello Docker!
Enter fullscreen mode Exit fullscreen mode

How It Works

  • Base Image: The php:8.2-cli base image provides a ready-to-use PHP CLI environment.
  • Working Directory: The WORKDIR /usr/src/app instruction sets the working directory inside the container.
  • File Copy: The COPY index.php . command copies the PHP script from the host to the container.
  • Command Execution: The CMD directive starts a PHP server that serves the index.php file.

Benefits of Dockerizing PHP Apps

  • Consistency: Your app behaves the same across different environments.
  • Portability: The app can run anywhere Docker is installed.
  • Ease of Setup: No need to install PHP or configure servers locally.

Next Steps

This guide demonstrated the basics of Dockerizing a simple PHP app. To take it further:

  • Add a web server like Apache or Nginx to handle more complex scenarios.
  • Create a docker-compose.yml file to manage multi-container setups.
  • Integrate database services or other dependencies.

Conclusion

With just a few steps, you’ve successfully Dockerized a PHP application. This approach is perfect for creating isolated, reproducible development environments. Try it out for more complex projects and see how Docker streamlines your workflow!

Top comments (0)