Linux主机上进行个人博客Docker化

2025-11-17 92 11/17

Docker 可以把应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何机器上,也可以实现虚拟化。

在Linux主机上部署Docker并配置个人网站

建议先在本机简单部署wordpress进行了解大致流程更方便学习

Docker的基础学习可以看B站[技术爬爬虾]

https://www.bilibili.com/video/BV1THKyzBER6/?spm_id_from=333.337.search-card.all.click&vd_source=cbcb4b8cab0a94fbab3f04c22da2afff

 

安装Docker

curl -fsSL https://get.docker.com -o install-docker.sh
bash install-docker.sh

下载完后查看

root@sanopll-virtual-machine:/tmp# docker -v
Docker version 28.5.2, build ecc6942

显示版本号,下载成功

部署博客,需要用到三种镜像:

wordpress,nginx,mysql

 

首先创建一个docker网络让容器之间可以互相通信

docker network create wp-net

创建数据卷,便于持久化

docker volume create wordpress_db_data
docker volume create wordpress_app_data
docker volume create nginx_config

一,启动MySQL容器,(run启动时未下载镜像会自动下载)

docker run -d \
  --name wordpress_db \
  --network wp-net \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wordpress \    #用户自定
  -e MYSQL_PASSWORD=password \ #密码自定
  -e MYSQL_ROOT_PASSWORD=root \#root密码
  -v wordpress_db_data:/var/lib/mysql \
  -v var/db-backups:/backups \
  mysql

用户名密码可以自己定,这里仅参考

二,启用wordpress容器

docker run -d \
  --name wordpress \
  --network wp-net \
  -e WORDPRESS_DB_HOST=wordpress_db:3306 \
  -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=password \
  -e WORDPRESS_DB_NAME=wordpress \
  -v wordpress_app_data:/var/www/html \
  wordpress:6.5-php8.2-fpm

三,创建nginx配置文件并启用nginx容器

# 创建配置目录
mkdir -p /var/wordpress-docker/nginx

# 创建nginx配置文件
# 复制即可,也可以根据自己的方案修改
cat > /var/wordpress-docker/nginx/wordpress.conf << 'EOF'
server {
listen 80;
server_name _;

root /var/www/html;
index index.php index.html index.htm;

# 安全头
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;

# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}

# WordPress永久链接重写
location / {
try_files $uri $uri/ /index.php?$args;
}

# PHP处理
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress_app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

# 安全设置
location ~ /\.ht {
deny all;
}
location ~ /wp-config.php {
deny all;
}
}
EOF

启动nginx容器

docker run -d \
  --name wordpress_nginx \
  --network wp-net \
  -p 80:80 \  #端口自定,这里是80端口
  -v wordpress_app_data:/var/www/html \
  -v ~/wordpress-docker/nginx/wordpress.conf:/etc/nginx/conf.d/default.conf \
  nginx:alpine

四,对MySQL配置用于wordpress连接

创建wordpress数据库并创建用于登录的用户

-- 创建数据库
CREATE DATABASE wordpress;

-- 创建新用户并授予完全权限
CREATE USER 'wordpress'@'%' IDENTIFIED BY 'Wordpress-pass';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' WITH GRANT OPTION;

-- 刷新
FLUSH PRIVILEGES;

五,测试配置是否成功并进行wordpress管理页面配置

重启所有容器刷新配置,以免有些配置不加载

docker restart wordpress wordpress_nginx wordpress_db

本机为linux系统的vps,在个人主机上访问vps的80端口

若出现wordpress配置页面,则成功

接下来按照标准流程填写即可

反之,若出现以下问题:

数据库无法连接:

检查wordpress容器中的wp-config.php,查看是否正确配置了连接

检查mysql是否正确的创建了可远程访问的用户

页面无法访问:

大概率是nginx配置问题,检查docker logs wordpress_nginx,查看日志,里面有详细记录

如果你下载的镜像非php-fpm,而是默认镜像,可以考虑检查是否为apache服务器,若是修改nginx配置代理到apache

 

- THE END -

sanoplluser

11月17日17:21

最后修改:2025年11月17日
1

非特殊说明,本博所有文章均为博主原创。

共有 1 条评论

回复给 test123 点击这里取消回复。

  1. test123

    感觉写的不错,我是作者 🤓
    这只是测试评论