1. Chuẩn bị
-- Lấy các images về
1 2 3 4 5 6 7 8 |
// fpm là dịch vụ tạo ra nhiều tiến trình có sẵn docker pull php:7.3-fpm docker pull httpd docker pull mysql // Tạo 1 network dùng chung cho các container: www-net docker network create --driver bridge www-net docker network ls |
-- Tạo thư mục: C:\Docker\mycode sẽ làm bộ nhớ cho các container
-- Tạo file test C:\Docker\mycode\www\test.php
1 2 3 |
<?php echo "ApacheHTTPD"; phpinfo(); |
2. Tạo container: c-php tự động lắng nghe trên cổng 9000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Tạo container: -d: chạy nền luôn ( khác với -it: chạy và vào terminal) docker run -d --name c-php -h php -v C:\Docker\mycode:/home/mycode --network www-net php:7.3-fpm // Vào container và chạy thử bash docker exec -it c-php bash # php --version # cd /home/mycode/www # php test.php // Cài thêm lệnh ping # apt update # apt install iputils-ping // Kiểm tra các extension được nạp cùng php # php -m // Cài thêm extension cho php chạy được mysql # docker-php-ext-install mysqli # docker-php-ext-install pdo_mysql # exit docker restart c-php |
3. Tạo container c-httpd
-- 3.1. Copy file cấu hình của httpd
1 |
docker run --rm -v C:\Docker\mycode:/home/mycode httpd cp /usr/local/apache2/conf/httpd.conf /home/mycode |
-- 3.2. Sửa file C:\Docker\mycode\httpd.conf để sử dụng proxy trong apache
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Bỏ comment những đoạn sau LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so // thêm vào cuối file AddHandler "proxy:fcgi://c-php:9000" .php // Đổi thư mục làm việc mặc định # DocumentRoot "/usr/local/apache2/htdocs" # <Directory "/usr/local/apache2/htdocs"> // Khởi động bằng file index.php <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> DocumentRoot "/home/mycode/www" <Directory "/home/mycode/www"> |
-- 3.3 Tạo container
1 |
docker run --network www-net --name c-httpd -h httpd -p 9999:80 -p 443:443 -v C:\Docker\mycode:/home/mycode/ -v C:\Docker\mycode\httpd.conf:/usr/local/apache2/conf/httpd.conf httpd |
-- *Dùng trình duyệt truy cập http://localhost:9999 và http://localhost:9999/test.php để xem kết quả
4. Tạo container c-mysql tự động lắng nghe trên cổng 3306
-- 4.1. Copy file cấu hình của mysql
1 |
docker run --rm -v C:\Docker\mycode:/home/mycode mysql cp /etc/mysql/my.cnf /home/mycode/ |
-- 4.2. Sửa file cấu hình C:\Docker\mycode\my.cnf để hoạt động với phiên bản mysql xác thực cũ
1 2 |
// Thêm vào cuối file default-authentication-plugin=mysql_native_password |
-- 4.3. Tạo thư mục C:/Docker/mycode/db => mục đích để lưu db vào đó, nếu lỡ xóa container mysql thì vẫn còn db
-- 4.4. Tạo container
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
docker run -e MYSQL_ROOT_PASSWORD=abc123 -v C:\Docker\mycode\my.cnf:/etc/mysql/my.cnf -v C:\Docker\mycode\db:/var/lib/mysql --name c-mysql mysql docker network connect www-net c-mysql // Test thử c-mysql hoạt động docker exec -it c-mysql bash // Kết nối tới database với root@abc123 # mysql -uroot -pabc123 mysql> SHOW DATABASES mysql> USE mysql; mysql> SHOW TABLES; // Tạo user và db mới mysql> CREATE DATABASE wp_wordpress; mysql> CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpass'; // Cấp toàn quyền cho user mysql> GRANT ALL PRIVILEGES ON wp_wordpress.* TO 'testuser'@'%'; mysql> FLUSH PRIVILEGES; mysql> exit // Kết nối lại bằng testuser # mysql -utestuser -ptestpass mysql> SHOW DATABASES |
5. Sử dụng WordPress
- Download mã nguồn từ trang chủ: https://wordpress.org/download/
- Đưa toàn bộ source code wordpress vào C:\Docker\mycode\www
- Vào trình duyệt: http://localhost:9999/index.php
- Bắt đầu cài đặt worpress với thông số
1 2 3 4 5 |
Database Name: wp_wordpress Username: testuser Password: testpass Database Host: c_mysql Table Prefix: wp_ |