487 字
2 分钟
Docker部署Typecho并使用Nginx Proxy Manager反代
本文主要内容本文介绍了如何使用 Docker 部署 Typecho,特别是解决官方 Docker 镜像导致部分主题不可使用的问题,如
Cuckoo主题。
拉取官方代码
-
克隆仓库并进入目录:
Terminal window git clone https://github.com/typecho/Dockerfile && cd Dockerfile -
修改 Dockerfile 和初始化脚本:
-
打开
Dockerfile.base并将最后几行改为:VOLUME /typocheWORKDIR /typoche -
修改
scripts/init.sh文件,替换所有/app关键字为typecho。
-
-
修改构建脚本:
- 编辑
build.sh,设置 Docker Hub 用户名:Terminal window dockerhub_username=${dockerhub_username:-your_username}
- 编辑
-
执行构建命令:
Terminal window ./build.sh -v 1.2.1 -p 8.0 -o alpine fpmv: Typecho 版本,参考官方 Release Tagp: PHP 版本o: 镜像平台,这里使用alpinefpm: 使用fpm,如需 apache 版本,改为php
部署流程
配置 PostgreSQL 数据库
-
创建并编辑
docker-compose.yaml:Terminal window cd .. && mkdir pgsql && cd pgsql && nano docker-compose.yaml添加以下内容:
services:db:image: postgres:17-alpinerestart: unless-stoppednetworks:- networkenvironment:POSTGRES_USER: ${DB_USER}POSTGRES_PASSWORD: ${DB_PASSWORD}POSTGRES_DB: ${DB_NAME}volumes:- ./data:/var/lib/postgresql/data- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.dhealthcheck:test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]interval: 5stimeout: 5sretries: 5networks:network:driver: bridge -
创建环境变量文件
.env:Terminal window nano .env添加如下配置:
.env DB_USER=xxxxDB_PASSWORD='xxxxxx'DB_NAME=typecho-blog -
启动数据库服务:
Terminal window docker compose up -d
配置 Typecho
-
设置 Typecho 服务:
Terminal window cd .. && mkdir typecho && cd typecho && nano docker-compose.yaml配置如下内容:
services:typecho:image: your_dockerhub_username/typecho:1.2.1-php8.0-fpm-alpinerestart: unless-stoppednetworks:- pgsql_networkports:- 65021:9000environment:TYPECHO_SITE_URL: https://blog.useforall.comTYPECHO_DB_ADAPTER: Pdo_PgsqlTYPECHO_DB_HOST: dbTYPECHO_DB_PORT: 5432TYPECHO_DB_USER: ${DB_USER}TYPECHO_DB_PASSWORD: ${DB_PASSWORD}TYPECHO_DB_DATABASE: ${DB_NAME}TYPECHO_USER_NAME: ${ADMIN_USER}TYPECHO_USER_PASSWORD: ${ADMIN_PASSWORD}TYPECHO_USER_MAIL: ${ADMIN_MAIL}TYPECHO_INSTALL: 1TIMEZONE: Asia/ShanghaiMEMORY_LIMIT: 200Mvolumes:- ./typecho:/typechonetworks:pgsql_network:external: true -
创建
.env文件以设定环境变量:Terminal window nano .env添加以下信息:
.env DB_USER=xxxxDB_PASSWORD='xxxx'DB_NAME=typecho-blogADMIN_USER=limADMIN_PASSWORD='xxxx'注意DB_* 配置项必须与 PostgreSQL 数据库中的一致,否则无法连接数据库。
-
启动 Typecho 服务:
Terminal window docker compose up -d
配置 Nginx Proxy Manager
-
设置 Nginx 代理服务:
Terminal window cd .. && mkdir npm && nano docker-compose.yaml添加如下内容:
services:app:network_mode: bridgeimage: 'jc21/nginx-proxy-manager:latest'restart: unless-stoppedports:- 80:80- 65020:81- 443:443volumes:- ./data:/data- ./letsencrypt:/etc/letsencrypt- ../typecho/typecho:/typecho:ro -
启动 Nginx Proxy Manager:
Terminal window docker compose up -d -
配置 Nginx 使用 SSL 证书:


Nginx 配置:
root /typecho;index index.php;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php(.*)$ {fastcgi_pass 172.17.0.1:65021;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
Docker部署Typecho并使用Nginx Proxy Manager反代
https://blog.useforall.com/posts/3/ 最后更新于 2025-02-26,距今已过 263 天
部分内容可能已过时
Lim's Blog