Docker Compose for PHP Application Environment

Docker Compose is a tool used to manage Docker container applications and bring multiple containers together. It includes multiple services defined in a YAML file, along with their configurations. This file contains information on all the containers required by an application and how these containers will work together.

On the other hand, a Dockerfile is a file format used to build Docker containers. The Dockerfile contains step-by-step instructions to create an image. An image is a package containing the environment in which a container runs and the application code.

Below is an example docker-compose.yml file for creating a PHP application environment using Docker Compose with PHP, Apache, MySQL, and phpMyAdmin. This file includes an Apache server hosting a PHP application, a MySQL database, and a phpMyAdmin interface.

version: '3.8'

services:
  # Apache and PHP service
  web:
    image: php:8-apache
    container_name: php-apache-container
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html

  # MySQL service
  mysql:
    image: mysql:8.0
    networks:
      - my-network
    container_name: mysql-container
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: your_database
      MYSQL_USER: your_user
      MYSQL_PASSWORD: your_password
    volumes:
      - ./mysql-data:/var/lib/mysql

  # phpMyAdmin service
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    networks:
      - my-network
    container_name: phpmyadmin-container
    ports:
      - "8081:80"
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: root_password
    depends_on:
      - mysql

# Define networks
networks:
  my-network:

This file defines three services (web, mysql, and phpmyadmin). It uses depends_on to ensure that the phpMyAdmin service starts after the MySQL service has started.

Additionally, two volumes connected to the host machine’s file system are added using volumes. These volumes represent the folder where Apache will host the PHP code (./) and the folder where MySQL will store its database files (./mysql-data). This way, your data will not be lost even if the containers are stopped.

The networks section in Docker Compose defines the networks that allow communication between containers within the application. These networks enable containers to communicate with each other and allow specific services to operate on specific networks. This is useful when you want to isolate services running in different network segments for security or performance requirements.

After completing the configurations, you can bring up the services with the following command:

docker-compose up -d

Now, you can open your browser and view your PHP application at http://localhost:8080. Access the phpMyAdmin interface at http://localhost:8081/

Ads Blocker Image Powered by Code Help Pro

Reklam Engelleyici Algılandı!

Reklamları engellemek için uzantı kullandığınızı tespit ettik.

Lütfen bu reklam engelleyiciyi devre dışı bırakarak ya da sitemize izin vererek bize destek olun.

Dikkat: VPN eklentiniz üzerinde de reklam engelleyici olabilir.