docker分离Typecho_Docker安装typecho

缘起

由于上周企鹅云学生机超级大促销,恰逢千万云和在香港的云主机都快要到期,果断薅了6年多的低配主机,由于涉及到博客的迁移,为了让以后的更加省事儿和方便,决定将typecho搭建的博客全部用docker进行部署。在这里记录下,方便后期。

安装docker

docker官网很详细,安装教程见https://docs.docker.com/install/,选择具体的平台一步一步进行安装即可

不过由于大家都懂的原因,国内的云服务器如果不采用镜像的话,从docker官方仓库拉取仓库那是相当地。。。慢,更改一下docker镜像仓库。把docker国内官方镜像https://registry.docker-cn.com加入配置即可,这里以Ubuntu为例,假设按照官方教程安装后,只需要修改/etc/docker/daemon.json文件并添加上registry-mirrors键值,如下:

{

"registry-mirrors": ["https://registry.docker-cn.com"]

}

安装docker-compose

因为typecho需要nginx(或者apache,caddy等webserver),php和mysql才能运行,因此我们需要至少3个镜像,为了方便管理,我们这里采用docker-compose来进行管理,由于docker-compose在Ubuntu下默认并未安装,因此需要安装docker-compose,官方安装教程见https://docs.docker.com/compose/install/

构建php镜像

由于官方的PHP镜像中没有安装pdo_mysql扩展,因此我们需要自行构建一个带有pdo_mysql的PHP镜像,使用Dockerfile如下进行构建:

FROM php:7.2.3-fpm

MAINTANER scofield

RUN apt-get update

RUN docker-php-ext-install pdo_mysql

执行命令docker build -t scofieldpeng/php:7.2.3-fpm进行构建,构建完毕后执行docker images|grep scofieldpeng/php:7.2.3-fpm如果不为空即为构建成功

启动和运行typecho

一切就绪后,我们准备下面文件:

# app文件夹下

- docker-compose.yml

- mysql(mysql文件夹,用来存放mysql数据,方便后期导出)

- mysql.env(mysql镜像的环境)

- typecho.conf(nginx配置文件)

- typecho(typecho的安装文件,github下下载即可,注意最新的正式版有安装问题,直接从master分支下拉取)

其中mysql.env文件内容为:

# MySQL的root用户默认密码,这里自行更改

MYSQL_ROOT_PASSWORD=123456

# MySQL镜像创建时自动创建的数据库名称

MYSQL_DATABASE=typecho

# MySQL镜像创建时自动创建的用户名

MYSQL_USER=typecho

# MySQL镜像创建时自动创建的用户密码

MYSQL_PASSWORD=123456

typecho.conf的内容为:

server {

listen 0.0.0.0:80;

server_name xxx(这里写自己博客的域名,例如pjf.name);

root /app;

index index.php;

access_log /var/log/nginx/typecho_access.log main;

if (!-e $request_filename){

rewrite ^(.*)$ /index.php$1 last;

}

location ~ .*\.php(\/.*)*$ {

include fastcgi_params;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_index index.php;

fastcgi_pass php-fpm:9000;

}

}

然后是docker-compose.yml文件的内容:

version: '2'

services:

nginx:

image: nginx:1.13.9-alpine

ports:

- "80:80"

restart: always

volumes:

- ./typecho:/app

- ./typecho.conf:/etc/nginx/conf.d/default.conf

- logs:/var/log/nginx

links:

- php-fpm

depends_on:

- php-fpm

php-fpm:

image: scofieldpeng/php:7.2.3-fpm

restart: always

volumes:

- ./typecho:/app

links:

- db

depends_on:

- db

db:

image: mysql:5.7.21

restart: always

ports:

- 127.0.0.1:13306:3306

volumes:

- ./mysql:/var/lib/mysql

- logs:/var/logs/mysql

env_file:

- mysql.env

volumes:

logs:

然后执行docker-compose up -d,然后浏览器输入域名或者服务器IP即可进行访问

迁移

如果要迁移,直接将整个文件夹迁移到新的服务器,然后执行docker-compose up -d即可快速进行迁移


版权声明:本文为weixin_39845206原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。