---
title: wordpress和typecho和halo三种博客部署教程
published: 2025-01-06
tags: [Docker, 教程]
category: 教程
draft: false
---

## 使用Docker部署


###  Docker-compose部署wordpress


创建项目文件夹

```
mkdir wordpress && cd wordpress
```

创建`docker-compose.yml`文件并写入以下代码配置：


```
services:
  db:
    image: mysql:8.0
    volumes:
      - ./data/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpressyyds
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wp

  wordpress:
    container_name: wordpress
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./data/wp:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    networks:
      - wp

networks:
  wp:
```

运行：

```
docker compose up -d
```

站点端口为 `8000`     后台路径 `/wp-admin`

---




### 修改docker中wordpress的上传限制。


进入 wordpress 容器
```
docker exec -it wordpress /bin/bash
```
wordpress 容器中的这个路径`/usr/local/etc/php/`，是存放 `php.ini` 的地方，但是默认是没有 `php.ini` 这个文件的，所以我们要通过复制一份`php.ini-production`文件，来生成 `php.ini` 文件。
```
cd /usr/local/etc/php/
```
```
cp php.ini-production php.ini
```
然后使用vim编辑器修改即可，如果没有则需要安装一下

更新及安装vim，使用如下代码
```
apt-get update
apt-get install vim
```
安装完成vim，现在就可以对php.ini进行编辑了。
```
vim php.ini
```
找到这几个变量，根据自己需求修改。
```
upload_max_filesize = 2M      # PHP最大上传文件大小
post_max_size = 8M            # 服务器最大数据量和文件大小
memory_limit = 128M           # PHP内存占用限制
```
最后一步！

重启wordpress
```
docker restart wordpress
```


---
---

### wordpress启用redis缓存的部署方法

```
services:
  db:
    image: mysql:8.0
    volumes:
      - ./data/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpressyyds
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wp

  wordpress:
    container_name: wordpress
    depends_on:
      - db
      - redis  # 添加redis
    image: wordpress:latest
    volumes:
      - ./data/wp:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_REDIS_HOST: redis
    networks:
      - wp

  redis:
    image: redis:alpine
    container_name: redis
    restart: always
    networks:
      - wp

networks:
  wp:
```

- 在`wp-config.php`文件中添加以下代码
```
define('WP_REDIS_HOST', 'redis');
define('WP_CACHE', true);

// 确保添加在这个代码前面
/* That's all, stop editing! Happy blogging. */
```

- 容器内安装redis扩展
```
docker exec -it wordpress /bin/bash
```
```
apt-get update && apt-get install -y libz-dev libssl-dev

pecl install redis           # 这里直接一路回车

docker-php-ext-enable redis
```
- 重启容器
```
docker restart wordpress
```

- 插件商城搜索安装`redis`官方插件：`Redis Object Cache`    并启用`redis`缓存
---
- 修改后台路径插件`WPS Hide Login`
- 备份插件`WPvivid`
- 直播播放器插件`SRS Player`
- 优化性能缓存插件`WP Fastest Cache`
- 压缩图片和懒加载插件`Smush`

---



### Docker部署halo博客

```
docker run -it -d --name halo -p 8090:8090 -v ./halo2:/root/.halo2 halohub/halo:2
```



地址： `IP:8090`

后台路径：`/console`


---

***国内阿里云镜像***
```
registry.fit2cloud.com/halo/halo
```

---

### `docker-compose.yaml`部署

```
services:
  halo:
    image: halohub/halo:2
    restart: always
    depends_on:
      - mysql
    ports:
      - "8090:8090"
    volumes:
      - ./halo2:/root/.halo2
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo
      - --spring.r2dbc.username=halo
      - --spring.r2dbc.password=halo_password
      - --spring.sql.init.platform=mysql
      - --halo.external-url=http://公网IP:8090/

  mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_DATABASE: halo                  # 数据库名称
      MYSQL_USER: halo                      # 数据库用户名
      MYSQL_PASSWORD: halo_password         # 数据库密码
      MYSQL_ROOT_PASSWORD: halo_password    # 数据库root密码
    volumes:
      - ./data/mysql:/var/lib/mysql         # 映射数据库文件
    restart: always
```




---


---


### Docker部署typecho



```
services:
  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: typechoPASSWORD
      MYSQL_DATABASE: typecho
      MYSQL_USER: typecho
      MYSQL_PASSWORD: typechoPASSWORD
    volumes:
      - ./mysql-data:/var/lib/mysql

  typecho:
    image: joyqi/typecho:nightly-php8.2-apache
    restart: always
    depends_on:
      - mysql
    ports:
      - "8080:80"
    environment:
      TIMEZONE: Asia/Shanghai
      TYPECHO_SITE_URL: https://your-domain.com
      TYPECHO_DB_HOST: mysql
      TYPECHO_DB_NAME: typecho
      TYPECHO_DB_USER: typecho
      TYPECHO_DB_PASS: typechoPASSWORD
    volumes:
      - ./typecho-data:/var/www/html
```

`https://your-domain.com`替换为你的网址，提前反代好。

（可选）重置后台管理员密码：删除站点目录的`config.inc.php`文件，然后重新安装选择保留原有数据库即可

#### 主题文件目录`usr/themes`

安装git:
```
sudo apt install git
```

下载主题：
```
git clone 主题Git仓库地址
```
复制到主题目录：
```
docker cp 主题文件路径 typecho-server:/app/usr/themes
```

[仓库地址](https://hub.docker.com/r/joyqi/typecho)
