Mobile wallpaper
487 字
2 分钟

Docker部署Typecho并使用Nginx Proxy Manager反代

2025-01-04
2025-02-26
浏览量 加载中...
本文主要内容

本文介绍了如何使用 Docker 部署 Typecho,特别是解决官方 Docker 镜像导致部分主题不可使用的问题,如 Cuckoo 主题。

拉取官方代码#

  1. 克隆仓库并进入目录:

    Terminal window
    git clone https://github.com/typecho/Dockerfile && cd Dockerfile
  2. 修改 Dockerfile 和初始化脚本:

    • 打开 Dockerfile.base 并将最后几行改为:

      VOLUME /typoche
      WORKDIR /typoche
    • 修改 scripts/init.sh 文件,替换所有 /app 关键字为 typecho

  3. 修改构建脚本:

    • 编辑 build.sh,设置 Docker Hub 用户名:
      Terminal window
      dockerhub_username=${dockerhub_username:-your_username}
  4. 执行构建命令:

    Terminal window
    ./build.sh -v 1.2.1 -p 8.0 -o alpine fpm
    • v: Typecho 版本,参考官方 Release Tag
    • p: PHP 版本
    • o: 镜像平台,这里使用 alpine
    • fpm: 使用 fpm,如需 apache 版本,改为 php

部署流程#

配置 PostgreSQL 数据库#

  1. 创建并编辑 docker-compose.yaml

    Terminal window
    cd .. && mkdir pgsql && cd pgsql && nano docker-compose.yaml

    添加以下内容:

    services:
    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
  2. 创建环境变量文件 .env

    Terminal window
    nano .env

    添加如下配置:

    .env
    DB_USER=xxxx
    DB_PASSWORD='xxxxxx'
    DB_NAME=typecho-blog
  3. 启动数据库服务:

    Terminal window
    docker compose up -d

配置 Typecho#

  1. 设置 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-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
  2. 创建 .env 文件以设定环境变量:

    Terminal window
    nano .env

    添加以下信息:

    .env
    DB_USER=xxxx
    DB_PASSWORD='xxxx'
    DB_NAME=typecho-blog
    ADMIN_USER=lim
    ADMIN_PASSWORD='xxxx'
    注意

    DB_* 配置项必须与 PostgreSQL 数据库中的一致,否则无法连接数据库。

  3. 启动 Typecho 服务:

    Terminal window
    docker compose up -d

配置 Nginx Proxy Manager#

  1. 设置 Nginx 代理服务:

    Terminal window
    cd .. && mkdir npm && nano docker-compose.yaml

    添加如下内容:

    services:
    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
  2. 启动 Nginx Proxy Manager:

    Terminal window
    docker compose up -d
  3. 配置 Nginx 使用 SSL 证书:

    image.pngclipboard-2025-01-04.png

    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 天

部分内容可能已过时

评论区

目录