docker部署typecho+mysql
本篇文章记录docker部署typecho的过程,并将typecho容器和mysql容器进行链接。
一、部署mysql容器
1 | docker run --name=mysql -d -p 10812:3306 -v /mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql:5.7 |
主要参数说明:
--name=mysql
: 容器名-p 10812:3306
: 将主机的10812端口映射到mysql容器的3306端口-v /mysql:/var/lib/mysql
: 将容器的/var/lib/mysql文件夹与主机的/mysql文件夹建立映射关系-e MYSQL_ROOT_PASSWORD=password
: 设置MYSQL数据库的root用户密码为password
,此处按需填写自己的密码
接下来的步骤是创建typecho数据库
再输入以下命令进入mysql容器命令行窗口.
1 | docker exec -it mysql bash |
输入以下命令进入mysql命令行模式
1 | mysql -u root -p |
接下来输入之前设置的root密码。
此时已经进入了mysql命令行模式,输入以下命令创建typecho数据库。
1 | create database typecho; |
设置完毕后,输入exit退出Mysql命令行,再输入exit退出容器命令行,回到主机命令行。
二、部署typecho容器
这里使用的镜像为80x86/typecho
。
1 | docker run -d --name=typecho --restart always --mount type=tmpfs,destination=/tmp -v /srv/http/typecho:/data --link mysql:db -e PHP_TZ=Asia/Shanghai -e PHP_MAX_EXECUTION_TIME=600 -p 90:80 80x86/typecho:latest |
主要参数说明:
-v /srv/http/typecho:/data
: 将容器的/data文件夹与主机的/srv/http/typecho文件夹建立映射关系此时在主机上的typecho站点目录为/srv/http/typecho。
-p 90:80
: 将主机的90端口映射到容器的80端口--link mysql:db
: 将mysql容器与typecho容器链接。
至此,两个容器已经创建完成,接下来访问站点进行typecho初始化的过程
注:如果服务器开启了防火墙,需要先将90端口打开(因为上述操作已经将主机的90端口映射到容器的80端口),假设此时服务器ip为222.222.222.222。
访问地址 http://222.222.222.222:90, 即可进入typecho安装页面。
如果选择mysql数据库引擎,填写的数据库地址应为db
,注意是db
!,端口依然是3306。
因为–link mysql:db这个参数将mysql容器地址映射为typecho容器中的db。如果你进入typecho容器中,使用ping db命令发现db地址为一个内网ip,两个容器在同一个局域网内。
三、博客迁移
数据库备份主要包含两个部分,一个是typecho站点目录,另一个是数据库内容。
备份站点目录
1 | zip -r typecho.zip /srv/http/typecho |
备份后生成了一个typecho压缩包。
备份数据库内容
依次输入以下命令:
1 | docker exec -it mysql bash # 进入mysql容器命令行 |
完成以上步骤就做好了备份,分别为typecho.zip文件和sqlfile.sql文件。
下面介绍如何恢复数据,假设我们按照前文部署typecho流程进行迁移。
首先按照按照流程部署一下mysql容器和typecho容器,注意此时不要初始化typecho站点。
恢复站点目录内容
1 | # 进入/srv/http/typecho目录 |
恢复数据库内容
1 | cd /mysql #进入文件夹后,将sqlfile.sql上传到该文件夹 |
注:如果修改了之前数据库的密码,需要修改typecho站点目录下的config.inc.php
文件。
修改上面的密码。
四、typecho更换域名
第一步需要登录mysql。
1 | docker exec -it mysql bash #进入容器 |
执行以下命令,操作数据库内容。
注意:以下 SQL 语句使用默认表前缀 typecho_
,操作数据库前建议备份。
1 | # 修改网站设置里的域名: |