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!";
?>
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"]
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 .
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
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/
You should see the following output:
Hello Docker!
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)