使用的开发板是正点原子的STM32MP157,之前尝试过不使用docker部署,但是由于各种依赖不兼容,所以放弃了。
1.docker安装
下载docker
wget https://download.docker.com/linux/static/stable/armhf/docker-28.1.1.tgz
解压缩
tar -zxvf docker-28.1.1.tgz
安装(没有权限加sudo)
mv -r docker /opt
添加至环境变量
vi /etc/profile
export PATH=/opt/docker/:$PATH
source /etc/profile
安装完成
2.下载docker镜像
docker pull arm32v7/nginx
docker pull arm32v7/wordpress
docker pull lsioarmhf/mariadb
root@ATK-MP157:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
arm32v7/nginx alpine 8d8ef889c1f9 5 weeks ago 33.9MB
arm32v7/wordpress php8.0-fpm 49f97d182d5f 18 months ago 494MB
lsioarmhf/mariadb latest 814ef92c8d93 6 years ago 296MB
3.配置Nginx
先配置Nginx
复制Nginx配置文件
mkdir -p /usr/local/share/nginx && cp /etc/nginx/nginx.conf /usr/local/share/nginx/
#把user www;pid /run/nginx/nginx.pid;注释掉
vi /usr/local/share/nginx/nginx.conf
#user www;
#pid /run/nginx/nginx.pid;
保存退出
创建wordpress的Nginx配置文件
mkdir /usr/local/share/nginx/conf.d
vi /usr/local/share/nginx/conf.d/wordpress.conf
wordpress.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
4.配置docker容器
docker run -it --name wordpress -p 9999:80 -v /usr/local/share/wordpress:/var/www/html -d arm32v7/wordpress:php8.0-fpm
docker run -d --name wordpress-nginx --link wordpress -v /usr/local/share/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /usr/local/share/nginx/conf.d:/etc/nginx/conf.d:ro -v /usr/local/share/wordpress:/var/www/html -p 9000:80 arm32v7/nginx:alpine
docker run -d --name mysql -v /usr/local/share/mysql/data:/var/lib/mysql -v /usr/local/share/mysql/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/logs:/var/log/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 lsioarmhf/mariadb:latest
配置允许外部访问
docker exec -it mysql /bin/bash
进入 mysql 数据库
mysql -u root -p
输入密码,就是前面的MYSQL_ROOT_PASSWORD
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
create database wordpress;
退出mysql,之后退出容器。
获取mysql容器的IP
root@ATK-MP157:~# docker inspect mysql | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
创建wp-config.php
vi //usr/local/share/wordpress
wp-config.php
<?php
/** WordPress 基本配置文件 */
/** 数据库的名称 */
define( 'DB_NAME', 'wordpress' );
/** 数据库用户名 */
define( 'DB_USER', 'root' );
/** 数据库密码 */
define( 'DB_PASSWORD', 'your_password_here' );
/** 数据库主机地址,通常是容器名或 mysql */
define( 'DB_HOST', 'wordpress-mysql' );
/** 数据库字符集,建议保持默认 */
define( 'DB_CHARSET', 'utf8' );
/** 数据库整理类型 */
define( 'DB_COLLATE', '' );
/**#@+
* 身份认证密钥
* 可访问 https://api.wordpress.org/secret-key/1.1/salt/ 获取一组新的密钥
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
/**#@-*/
/** WordPress 数据表前缀 */
$table_prefix = 'wp_';
/** 开启调试模式 */
define( 'WP_DEBUG', false );
/** 设置文件权限和路径 */
if ( !defined('ABSPATH') )
define( 'ABSPATH', __DIR__ . '/' );
require_once ABSPATH . 'wp-settings.php';
创建启动脚本,方便下次使用。
vi start_wordpress.sh
dockerd &
sleep 5
docker start wordpress
docker start wordpress_nginx
docker start mysql
注意一定要按顺序启动,否则mysql容器的IP地址不对,会导致wordpress打不开