Featured image of post Docker 部署 typecho 博客

Docker 部署 typecho 博客

docker 部署 typecho 博客

教程文档: https://blog.laoda.de/archives/docker-compose-install-typecho
typecho 博客_后台地址: http://localhost:8223

一 、创建必要的文件

1 、创建 mysql.env

1
2
3
4
5
6
mkdir -p /mnt/mydisk/home/typecho && touch /mnt/mydisk/home/typecho/mysql.env && cat > /mnt/mydisk/home/typecho/mysql.env <<'EOF'
MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=typecho
MYSQL_USER=username
MYSQL_PASSWORD=password
EOF

2 、创建 php/Dockerfile

1
2
3
4
5
6
7
mkdir -p /mnt/mydisk/home/typecho/php && touch /mnt/mydisk/home/typecho/php/Dockerfile && cat > /mnt/mydisk/home/typecho/php/Dockerfile <<'EOF'
FROM php:7.3.29-fpm
RUN apt-get update \
    && docker-php-ext-install pdo_mysql \
    && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \
    && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini
EOF

3 、创建 nginx/default.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mkdir -p /mnt/mydisk/home/typecho/nginx && touch /mnt/mydisk/home/typecho/nginx/default.conf && cat > /mnt/mydisk/home/typecho/nginx/default.conf <<'EOF'
server {
    listen 80 default_server;
    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/typecho_access.log main;
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }
    location / {
        index index.html index.htm index.php;

        if (!-e $request_filename) {
            rewrite . /index.php last;
        }
    }
    
    location ~ \.php(.*)$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
EOF

二 、下载typecho源码

需要科学网络,不然就非常慢。

1
mkdir -p /mnt/mydisk/home/typecho/typecho && cd /mnt/mydisk/home/typecho/typecho && wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip && unzip typecho.zip

uploads目录添加权限(附件目录)

1
chmod -R 777 /mnt/mydisk/home/typecho/typecho/usr/uploads

三 、创建 docker-compose.yml 文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
mkdir -p /mnt/mydisk/home/typecho && touch /mnt/mydisk/home/typecho/docker-compose.yml && cat > /mnt/mydisk/home/typecho/docker-compose.yml <<'EOF'
services:
  nginx:
    image: nginx
    ports:
      - "8223:80"    # 左边可以改成任意没使用的端口
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./typecho:/var/www/html
      - ./nginx:/etc/nginx/conf.d
      - ./logs:/var/log/nginx
    depends_on:
      - php
    networks:
      - web

  php:
    build: php
    restart: always
    expose:
      - "9000"       # 不暴露公网,故没有写9000:9000
    volumes:
      - ./typecho:/var/www/html
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - mysql
    networks:
      - web

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      - TZ=Asia/Shanghai
    expose:
      - "3306"  # 不暴露公网,故没有写3306:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    env_file:
      - mysql.env
    networks:
      - web

networks:
  web:
EOF

cd /mnt/mydisk/home/typecho && docker-compose up -d

2 、拉取并运行

1
cd /mnt/mydisk/home/typecho && docker-compose up -d

3 、停‮并止‬删除

1
cd /mnt/mydisk/home/typecho && docker-compose down

4 、拉取镜像

1
docker pull nginx:latest

四 、容器维护命令

1 、查‮所看‬有运行‮器容‬的名称

1
docker ps -a --format "{{.Names}}"

2 、停止 typecho 容器

1
docker stop typecho 

3 、启动 typecho 容器

1
docker start typecho

4 、重启 typecho 容器

1
docker restart typecho

5 、进入 typecho 容器

1
2
3
## Ctrl+D 退出容器
## docker exec -it typecho sh
docker exec -it typecho bash

五 、创建 config.inc.php 文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mkdir -p /mnt/mydisk/home/typecho/typecho && touch /mnt/mydisk/home/typecho/typecho/config.inc.php && cat > /mnt/mydisk/home/typecho/typecho/config.inc.php <<'EOF'
<?php
// 站点根路径
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

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

// 主题目录(相对路径)
define('__TYPECHO_THEME_DIR__', '/usr/themes');

// 管理目录(相对路径)
define('__TYPECHO_ADMIN_DIR__', '/jkadmin/');

// 后台主题左上角头像地址
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://img1.baidu.com/it/u=184448109,1805815777&fm=253&fmt=auto?w=200&h=200');

// 注册自动加载
require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php';

// 初始化
\Typecho\Common::init();

// 配置数据库
$db = new \Typecho\Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => 'mysql',
  'port' => 3306,
  'user' => 'username',
  'password' => 'password',
  'charset' => 'utf8mb4',
  'database' => 'typecho',
  'engine' => 'InnoDB',
  'sslCa' => '',
  'sslVerify' => true,
), \Typecho\Db::READ | \Typecho\Db::WRITE);
\Typecho\Db::set($db);
EOF

六 、进入后台-配置数据库

后台地址:http://localhost:8223

初始化配置

  1. 数据库适配器:Pdo驱动Mysql适配器
  2. 数据库前缀:typecho_
  3. 数据库地址:mysql
  4. 数据库用户名:username
  5. 数据库密码:password
  6. 数据库名:typecho

七 、Typecho修改默认后台登陆地址路劲对后台登陆地址进行隐藏

在根目录下找到config.inc.php文件
/* 后台路径(相对路径) / define('__TYPECHO_ADMIN_DIR__', '/admin/'); 把这个/admin/路径改成自己想要的路径就行了

八 、地址重写功能

九 、Typecho 升级 php 版本

1、首先停‮并止‬删除容器

1
cd /mnt/mydisk/home/typecho && docker-compose down

2、修改 php/Dockerfile 文件

  • 将你的 PHP 配置从 7.3.29-fpm 升级到 7.4-fpm,你需要修改 Dockerfile,并将基础镜像替换为 php:7.4-fpm。
1
2
3
4
5
FROM php:7.3.29-fpm
RUN apt-get update \
    && docker-php-ext-install pdo_mysql \
    && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \
    && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini

修改为

1
2
3
4
5
FROM php:7.4-fpm
RUN apt-get update \
    && docker-php-ext-install pdo_mysql \
    && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \
    && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini

3、拉取 php:7.4-fpm 镜像

1
docker pull php:7.4-fpm

4、拉取并运行

  • 重新创建并启动容器,会自动重新构建 PHP 服务的镜像(构建时最好开代理-要不然巨慢)
1
cd /mnt/mydisk/home/typecho && docker-compose up -d

5、手动重新构建 PHP 服务的镜像

  • 在项目根目录下运行以下命令,重新构建 PHP 服务的镜像(构建时最好开代理-要不然巨慢)
1
docker-compose build php
本博客已稳定运行 小时 分钟
共发表 112 篇文章 · 总计 109.83 k 字
本站总访问量