1分钟迁移typecho到docker,1分钟搭建typecho

@Ta 2023-02-07发布,2023-02-07修改 319点击

说明

  • 数据库改为mariadb官方
  • typecho镜像为typecho官方提供
  • 如需要导入sql,请连接你的服务器:33062
  • 由于映射到docker容器(非虚拟机),可以随时关闭、删除、多容器并发(docker-compose追加typecho2 并且改端口8086:80,cdn源站添加备用IP:8086)

1:将docker-compose编排文件放入typecho/目录下,并修改【密码】

version: "3.0"

services:
  mysql:
    image: mariadb/server:10.3
    volumes:
      - $PWD/mysql:/var/lib/mysql
    environment:
      - "MARIADB_DATABASE=typecho"
      - "MARIADB_ROOT_HOST=%"
      - "MARIADB_ROOT_PASSWORD=cccyun.cc"  ##修改此处【数据库密码】
    ports:
      - 33062:3306  #调试使用
  typecho:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - $PWD/:/app/
    ports:
      - 8085:80
    depends_on:
      - mysql
    environment:
      - "TIMEZONE=Asia/Shanghai"
      - "TYPECHO_DB_HOST=mysql"
      - "TYPECHO_DB_PORT=3306"
      - "TYPECHO_DB_USER=root"
      - "TYPECHO_DB_PASSWORD=cccyun.cc" ##修改此处【数据库密码】
      - "TYPECHO_DB_DATABASE=typecho"

2: 把 .htaccess 伪静态放入typecho/ ,用来解决后台、前台404问题

<IfModule mod_rewrite.c>
RewriteEngine On
# 下面是在根目录,文件夹要修改路径
RewriteBase /build
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule> 

修改 config.ini.php

 
<?php
/**
 * Typecho Blog Platform
 *
 * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license    GNU General Public License 2.0
 * @version    $Id$
 */

define('__TYPECHO_SECURE__',true);

/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');

/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');

/** 设置包含路径 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);

/** 载入API支持 */
require_once 'Typecho/Common.php';

/** 载入Response支持 */
require_once 'Typecho/Response.php';

/** 载入配置支持 */
require_once 'Typecho/Config.php';

/** 载入异常支持 */
require_once 'Typecho/Exception.php';

/** 载入插件支持 */
require_once 'Typecho/Plugin.php';

/** 载入国际化支持 */
require_once 'Typecho/I18n.php';

/** 载入数据库支持 */
require_once 'Typecho/Db.php';

/** 载入路由器支持 */
require_once 'Typecho/Router.php';

//define('__TYPECHO_SECURE__',0);//开启https
/** 程序初始化 */
Typecho_Common::init();

//把这个放到项目的入口文件里
if (is_file(__DIR__.'/.env')) {
    $env = parse_ini_file(__DIR__.'/.env', true);    //解析env文件,name = PHP_KEY
    foreach ($env as $key => $val) {
        $name = strtolower($key);
        if (is_array($val)) {
            foreach ($val as $k => $v) {    //如果是二维数组 item = PHP_KEY_KEY
                $item = $name . '_' . strtolower($k);
                putenv("$item=$v");
            }
        } else {
            putenv("$name=$val");
        }
    }
}


$a=array (
    'host' => \getenv('TYPECHO_DB_HOST'),
    'user' =>\getenv('TYPECHO_DB_USER') ,
    'password' => getenv('TYPECHO_DB_PASSWORD'),
    'charset' => 'utf8',
    'port' => \getenv('TYPECHO_DB_PORT'),
    'database' =>\getenv('TYPECHO_DB_DATABASE'),
);


/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer($a, Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

3: 在typecho目录启动并运行

docker-compose up

在docker面板中(portainer/portainer)视角

image.png(76.81 KB)

image.png(123.21 KB)

image.png(121.66 KB)

回复列表(16|隐藏机器人聊天)
添加新回复
回复需要登录