最近自己在迁移博客到新的服务器上。自己的博客用的是typecho搭建的,正好最近接触到了docker容器,我就想着找个typecho的容器进行搭建,另外还发现了typecho更新了,就顺带更新下。
然后我就使用docker-compose配置了typecho所有环境的一键部署配置文件,博客也是迁移好了,之后又为我的域名也申请了ssl证书。这里就出现问题了,typecho部分链接不支持https,需要修改/app下的config.inc.php文件。我当时想着直接进容器修改就行了,但是进入容器发现没有vi和vim。
于是我尝试安装vi/vim,发现容器并不能成功安装,而且更新apt-get源后也是不行,最后查出原因是缺少一些库,我尝试去安装这些库后又提示我的容器硬盘大小不够,这时候我的容器已经崩掉了,网站也打不开。于是我就删掉容器重新部署。
最后想着用echo和cat命令配合修改了,命令如下:

先清除配置文件里面的所有内容:

echo > 文件名(或路径)

然后将完整的修改好的配置文件输入到这个已经清空的文件中去

cat >> ./config.inc.php <<EOF
<?php
// site root path
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

// 就为了加这一行,用于支持https链接
define('__TYPECHO_SECURE__',true);
// plugin directory (relative path)
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

// theme directory (relative path)
define('__TYPECHO_THEME_DIR__', '/usr/themes');

// admin directory (relative path)
define('__TYPECHO_ADMIN_DIR__', '/admin/');

// register autoload
require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php';

// init
\Typecho\Common::init();

// config db
\$db = new \Typecho\Db('Pdo_Mysql', 'typecho_');
\$db->addServer(array (
  'host' => 'db',
  'port' => 3306,
  'user' => 'typecho',
  'password' => 'jackis.0123',
  'charset' => 'utf8mb4',
  'database' => 'typecho',
  'engine' => 'InnoDB',
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set(\$db);
EOF    

这里就是覆盖追加多行文本到文件中 其中EOF就是表示开始结束的标志位
另外如果内容中有$需要对其转义(前面加上转移符)

当然上述方式修改文件算是曲线救国了

最后推荐一个最佳的办法就是使用docker cp来进行修改:

将主机/www/coonote目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/coonote 96f7f14e99ab:/www/

将主机/www/coonote目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/coonote 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

总不能你的本机没有vim命令吧!!!

Last modification:August 19, 2022
如果觉得我的文章对你有用,请随意赞赏