Configuración de docker para los cursos de PHP y Java

¿Qué es Docker?

Docker es una plataforma que permite crear, ejecutar y administrar contenedores.

Un contenedor es como una “caja” que incluye todo lo necesario para que una aplicación funcione: el código, las dependencias, las librerías y la configuración. Esto hace que la aplicación se ejecute siempre igual, sin importar en qué máquina o sistema operativo la lances.

Podemos descargar docker a partir de este enlace.

Características de nuestro contenedor

El siguiente fichero de configuración de docker montará un servidor con:

  • PHP
  • PhpMyAdmin
  • MySQL

Esta configuración nos permitirá utilizar bases de datos y programar en PHP. Esto es algo que usaremos en los cursos de:

Configuración de nuestro contenedor

docker-compose.yml

services:
    app:
        image: webdevops/php-apache-dev:8.3
        container_name: php-app
        working_dir: /app
        ports:
            - "8080:80"
        volumes:
            - ./:/app
        depends_on:
            - db
        environment:
            WEB_DOCUMENT_ROOT: /app # Añadiremos /public si estamos desarrollando para Laravel
            DB_HOST: db
            DB_USERNAME: root
            DB_PASSWORD: root

    composer:
        image: composer:2
        container_name: composer
        volumes:
            - ./:/app
        working_dir: /app
        entrypoint: ["composer"]

    artisan:
        image: webdevops/php-apache-dev:8.3
        working_dir: /app
        volumes:
            - ./:/app
        entrypoint: ["php", "artisan"]
        depends_on:
            - db

    db:
        image: mysql:8.0
        container_name: mysql-db
        environment:
            MYSQL_ROOT_PASSWORD: root
        ports:
            - "3306:3306"
        volumes:
            - dbdata:/var/lib/mysql

    phpmyadmin:
        image: phpmyadmin:latest
        container_name: phpmyadmin
        environment:
            PMA_HOST: db
            PMA_USER: root
            PMA_PASSWORD: root
        ports:
            - "8081:80"
        depends_on:
            - db

volumes:
    dbdata:

Para desplegar la aplicación en docker, ejecutaremos:

docker compose up -d