本文主要内容
本文介绍了如何使用 Docker 部署 Typecho,特别是解决官方 Docker 镜像导致部分主题不可使用的问题,如 Cuckoo
主题。
克隆仓库并进入目录:
bashgit clone https://github.com/typecho/Dockerfile && cd Dockerfile
修改 Dockerfile 和初始化脚本:
打开 Dockerfile.base
并将最后几行改为:
yamlVOLUME /typoche
WORKDIR /typoche
修改 scripts/init.sh
文件,替换所有 /app
关键字为 typecho
。
修改构建脚本:
build.sh
,设置 Docker Hub 用户名:
bashdockerhub_username=${dockerhub_username:-your_username}
执行构建命令:
bash./build.sh -v 1.2.1 -p 8.0 -o alpine fpm
v
: Typecho 版本,参考官方 Release Tagp
: PHP 版本o
: 镜像平台,这里使用 alpine
fpm
: 使用 fpm
,如需 apache 版本,改为 php
创建并编辑 docker-compose.yaml
:
bashcd .. && mkdir pgsql && cd pgsql && nano docker-compose.yaml
添加以下内容:
yamlservices:
db:
image: postgres:17-alpine
restart: unless-stopped
networks:
- network
environment:
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.d
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
networks:
network:
driver: bridge
创建环境变量文件 .env
:
bashnano .env
添加如下配置:
envDB_USER=xxxx DB_PASSWORD='xxxxxx' DB_NAME=typecho-blog
启动数据库服务:
bashdocker compose up -d
设置 Typecho 服务:
bashcd .. && mkdir typecho && cd typecho && nano docker-compose.yaml
配置如下内容:
yamlservices:
typecho:
image: your_dockerhub_username/typecho:1.2.1-php8.0-fpm-alpine
restart: unless-stopped
networks:
- pgsql_network
ports:
- 65021:9000
environment:
TYPECHO_SITE_URL: https://blog.useforall.com
TYPECHO_DB_ADAPTER: Pdo_Pgsql
TYPECHO_DB_HOST: db
TYPECHO_DB_PORT: 5432
TYPECHO_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: 1
TIMEZONE: Asia/Shanghai
MEMORY_LIMIT: 200M
volumes:
- ./typecho:/typecho
networks:
pgsql_network:
external: true
创建 .env
文件以设定环境变量:
bashnano .env
添加以下信息:
envDB_USER=xxxx DB_PASSWORD='xxxx' DB_NAME=typecho-blog ADMIN_USER=lim ADMIN_PASSWORD='xxxx' ADMIN_MAIL=blog@awebapp.useforall.com
注意
DB_*
配置项必须与 PostgreSQL 数据库中的一致,否则无法连接数据库。
启动 Typecho 服务:
bashdocker compose up -d
设置 Nginx 代理服务:
bashcd .. && mkdir npm && nano docker-compose.yaml
添加如下内容:
yamlservices:
app:
network_mode: bridge
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- 80:80
- 65020:81
- 443:443
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- ../typecho/typecho:/typecho:ro
启动 Nginx Proxy Manager:
bashdocker compose up -d
配置 Nginx 使用 SSL 证书:
Nginx 配置:
yamlroot /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;
}
本文作者:Lim
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!