本教程在 Debian 11 (bullseye) 测试,理论适用于所有还在生命周期的 Debian/Ubuntu 系统。
docker 安装
apt update && apt install curl -y
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
docker-compose.yml 文件:
version: '3'
networks:
typecho_network:
external: false
name: typecho_network
services:
typecho_web:
image: joyqi/typecho:1.2.0-php8.0-apache
expose:
- 80
environment:
- TYPECHO_SITE_URL=http://your-site.name
- TIMEZONE=Asia/Shanghai
- TYPECHO_INSTALL=0
- TYPECHO_DB_ADAPTER=Pdo_Mysql
- TYPECHO_PORT=3306
- TYPECHO_DB_USER=root
- TYPECHO_DB_PASSWORD=typecho
- TYPECHO_DB_DATABASE=typecho
volumes:
- ./typecho:/app
restart: unless-stopped
depends_on:
typecho_mysql:
condition: service_healthy
networks:
- typecho_network
typecho_mysql:
image: mysql:8.0
environment:
- MYSQL_DATABASE=typecho
- MYSQL_ROOT_PASSWORD=typecho
volumes:
- ./mysql:/var/lib/mysql
restart: unless-stopped
networks:
- typecho_network
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 5s
retries: 20
interval: 5s
官方提供的镜像里还有 php-fpm 和 php built-in server 版本,此处仅以 apache 为例。
如果不写 health check 的话,可能导致 mysql 刚刚启动,但还没有准备好接受 3306 端口传输的信息,此时 typecho 已经有请求发出。
随后运行 docker compose up -d && docker compose down
拉取 typecho 程序文件到映射的 volume。
typecho 迁移只需要备份 ./usr
目录(插件主题等)和数据库。
./usr
的迁移只需要覆盖 ./typecho/usr
下的文件即可。
mysql 迁移:
docker ps # 查看 docker 的 container id, 比如为 3e2d....
docker cp backup.sql 3e2d:/backup.sql
docker exec -it 3e2d bash
mysql -uroot -p -D typecho < /backup.sql
# then enter password
域名的配置只需要一个反向代理,Nginx Proxy Manager 是个好东西。
此处评论已关闭