Hướng dẫn tạo Docker cho môi trường PHP + MySQL trên Windows 10

Huy Châu - August 08, 2021 - Docker







Hôm nay mình sẽ hướng dẫn cách cấu hình Docker cho một dự án chạy PHP và MySQL trên Windows 10

Các bạn tìm hiểu Docker là gì tại đây


1. Đầu tiên cần cài đặt Docker Desktop cho Windows 10

https://docs.docker.com/docker-for-windows/install/




Sau khi cài đặt Docker Desktop thành công



2. Cấu hình Docker cho môi trường PHP + MySQL 


Cấu trúc của thư mục như sau: 



  • app\public-html: Thư mục source code sẽ nằm ở đây
  • docker-compose.yml :  Khai báo và cấu hình các service để chạy
  • Dockerfile : Chứa dòng lệnh để tạo Docker image


docker-compose.yml

version'3.8'
services:
    www:
        build.        
        depends_on:
            - db
        volumes:
            - ./app/public-html:/var/www/html/
        ports:
            - 8002:80
    db:        
        imagemysql        
        environment:
            MYSQL_ROOT_PASSWORDtest
            MYSQL_DATABASEmyDB
            MYSQL_USERtest
            MYSQL_PASSWORDtest
        ports:
            - "9906:3306"       
    phpmyadmin
        imagephpmyadmin/phpmyadmin
        ports
            - "8080:80"           
        environment:
            MYSQL_ROOT_PASSWORDtest            
            MYSQL_USERtest
            MYSQL_PASSWORDtest
        links
            - db:db            






Dockerfile


FROM php:8.0-apache
RUN docker-php-ext-install mysqli pdo_mysql
RUN apt-get update \
    && apt-get install -y libzip-dev \
    && apt-get install -y zlib1g-dev \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install zip




Tạo file index.php đơn giản để test kết nối MySQL

<?php
// The MySQL service named in the docker-compose.yml.
$host = 'db';

// Database use name
$user = 'test';

//database user password
$pass = 'test';

// check the MySQL connection status
$conn = new mysqli($host$user$pass);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
else {
    echo "Connected to MySQL server successfully!";
}
?>



Tiến hành chạy Docker dùng docker-compose up




Kết quả: