đầu tiên cần chạy database trước:
docker run -d -p 3306:3306 --name database_name -e MYSQL_ROOT_PASSWORD=password -v /home/docker/mariadb:/var/lib/mysql -d mariadb
docker exec -it database_name mysql -u root -p
create database database_name;
grant all privileges on database_name.* to 'nimtechnology_user'@'localhost' identified by 'nimtechnology_pass';
grant all privileges on database_name.* to 'nimtechnology_user'@'%' identified by 'nimtechnology_pass';
Tiêp theo có file docker-compose.yaml
wordpress:
image: wordpress
environment:
- WORDPRESS_DB_PASSWORD=nimtechnology_pass
- WORDPRESS_DB_USER=nimtechnology_user
- WORDPRESS_DB_HOST=192.168.101.34
- WORDPRESS_DB_NAME=database_name
ports:
- 8084:80
volumes:
- /home/docker/wordpress-private/html:/var/www/html
Sau đó bạn đăng nhập vào web với port 8084 và làm theo các hướng dẫn của wordpress
How to increase Memory Limit of WordPress.
Go to file wp-config.php
define( 'WP_MEMORY_LIMIT', '512M' ); /* That's all, stop editing! Happy publishing. */
Tăng nó lên 512MB
How to Run Third-Party Schedules
Mình có sài 1 FluentCRM để gửi mail

Thì giải thích 1 chút là nó sẽ run Curl call domain.
Nhưng mà mình dựng tron container thì nó không thể call domain public được.
Mục đích bây giờ là call vao domain và path là: wp-cron.php
Giờ có 2 cách là
Run Crontab trên máy chủ:
crontab -e
*/5 * * * * curl http://localhost:8080/wp-cron.php?doing_wp_cron > /dev/null 2>&1
cách 2 chạy crontab như 1 service trong docker compose:
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress
depends_on:
- mariadb
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mariadb:3306
WORDPRESS_DB_USER: wordpress_xxx
WORDPRESS_DB_PASSWORD: user_xxx
WORDPRESS_DB_NAME: wordpress_elearning_db
volumes:
- /home/docker/wordpress-elearning/html:/var/www/html
mariadb:
image: mariadb:latest
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: root_wordpress_elearning
MYSQL_DATABASE: wordpress_elearning_db
MYSQL_USER: wordpress_xxx
MYSQL_PASSWORD: user_xxx
volumes:
- /home/docker/wordpress-elearning/database:/var/lib/mysql
cron:
image: alpine:latest
container_name: wordpress-cron
depends_on:
- wordpress
command: >
sh -c "apk add --no-cache curl && echo '*/5 * * * * curl -s http://wordpress/wp-cron.php?doing_wp_cron > /dev/null 2>&1' | crontab - && crond -f -L /dev/stdout"
và để cả 2 cách trên chạy được thì anh em cần disable WordPress’s default pseudo-cron
sửa file: wp-config.php
define('DISABLE_WP_CRON', true);