typecho / Dockerfile

Docker Image packaging for Typecho
https://hub.docker.com/r/joyqi/typecho
GNU General Public License v2.0
86 stars 9 forks source link

docker compose 安装后 管理界面报503 #9

Closed Dev-Wiki closed 2 years ago

Dev-Wiki commented 2 years ago

安装方式: docker compose

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4
    volumes:
      - /var/typecho:/app/usr 
    environment:
      TYPECHO_SITE_URL: https://blog.devwiki.net
    ports:
      - "2080:80"

Docker安装过程结果

image

typecho 安装过程

image

image

修改db 路径后可安装: image

image

image

image

image

image

Dev-Wiki commented 2 years ago

改为自动安装同样的问题, 自动安装如下:

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - ./:/app/usr 
    environment:
      TIMEZONE: Asia/Shanghai
      MEMORY_LIMIT: 100m
      MAX_POST_BODY: 50m
      TYPECHO_INSTALL: 1
      TYPECHO_DB_ADAPTER: Pdo_SQLite
      TYPECHO_DB_FILE:615a4d4dabd49.db
      TYPECHO_DB_PREFIX: db_
      TYPECHO_SITE_URL: https://blog.devwiki.net
      TYPECHO_USER_NAME: name
      TYPECHO_USER_MAIL: email
      TYPECHO_USER_PASSWORD: password
    ports:
      - "2080:80"

自动安装后 前台页面可访问

image

管理界面 503

image

Dev-Wiki commented 2 years ago

改为自动安装同样的问题, 自动安装如下:

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - ./:/app/usr 
    environment:
      TIMEZONE: Asia/Shanghai
      MEMORY_LIMIT: 100m
      MAX_POST_BODY: 50m
      TYPECHO_INSTALL: 1
      TYPECHO_DB_ADAPTER: Pdo_SQLite
      TYPECHO_DB_FILE:615a4d4dabd49.db
      TYPECHO_DB_PREFIX: db_
      TYPECHO_SITE_URL: https://blog.devwiki.net
      TYPECHO_USER_NAME: name
      TYPECHO_USER_MAIL: email
      TYPECHO_USER_PASSWORD: password
    ports:
      - "2080:80"

自动安装后 前台页面可访问

image

管理界面 503

image

找到原因了, 使用自动安装或者手动安装, 无法创建数据库文件, 会报503

如果手动拷贝原来的数据库文件, 所有者不同, 和已经关闭的一个 issue类似, 但是不知道为何会 创建的时候无法创建 db文件.

手动拷贝db 文件的目录如下: image

不复制的目录则不会有数据库文件: image

joyqi commented 2 years ago

在 config.inc.php 文件里加上 define('__TYPECHO_DEBUG__', true);,然后看看报503时具体的报错信息是啥

Dev-Wiki commented 2 years ago

在 config.inc.php 文件里加上 define('__TYPECHO_DEBUG__', true);,然后看看报503时具体的报错信息是啥

不会生成此文件

Dev-Wiki commented 2 years ago

我重新安装控制台输出如下:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.52.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.52.2. Set the 'ServerName' directive globally to suppress this message
[Tue Mar 22 13:11:50.190619 2022] [mpm_prefork:notice] [pid 27] AH00163: Apache/2.4.52 (Debian) PHP/7.4.28 configured -- resuming normal operations
[Tue Mar 22 13:11:50.190692 2022] [core:notice] [pid 27] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
172.29.52.1 - - [22/Mar/2022:13:13:27 +0800] "GET /install.php?step=2&driver=Pdo_SQLite HTTP/1.1" 302 271 "http://192.168.31.137:2080/install.php?step=2" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
172.29.52.1 - - [22/Mar/2022:13:13:27 +0800] "GET / HTTP/1.1" 200 2209 "http://192.168.31.137:2080/install.php?step=2" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
172.29.52.1 - - [22/Mar/2022:13:13:29 +0800] "GET /index.php/archives/1/ HTTP/1.1" 200 4053 "http://192.168.31.137:2080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
172.29.52.1 - - [22/Mar/2022:13:13:31 +0800] "GET /admin/login.php HTTP/1.1" 503 1289 "http://192.168.31.137:2080/index.php/archives/1/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
Dev-Wiki commented 2 years ago

我修改了 数据库文件的 所属者 和组 同样不行

Dev-Wiki commented 2 years ago

在 config.inc.php 文件里加上 define('__TYPECHO_DEBUG__', true);,然后看看报503时具体的报错信息是啥

手动添加此文件和 内容, 页面没多余什么内容, 也没看到日志, 我使用的是威联通的nas的 docker环境, 你可试下: QuTScloud Online Demo | QNAP

joyqi commented 2 years ago

我已经在本地复现了这个问题,是一个命令行安装时的数据目录问题,现在你可以临时把安装时的环境变量,然后再启动新的容器

TYPECHO_DB_FILE: 615a4d4dabd49.db

改成

TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db

后续我会在代码中修复

Dev-Wiki commented 2 years ago

如果不自动安装, 安装过程界面选择db 的时候会:

但是删除 前面的 /app/usr 能进行下一步, 但是后台仍旧503

Dev-Wiki commented 2 years ago

我已经在本地复现了这个问题,是一个命令行安装时的数据目录问题,现在你可以临时把安装时的环境变量,然后再启动新的容器

TYPECHO_DB_FILE: 615a4d4dabd49.db

改成

TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db

后续我会在代码中修复

按照这个修改 不会自动安装了, 会进入手动安装 image

日志输出如下:

Typecho 1.2.0
PHP 7.4.28
安装程序检查到原有数据表已经存在.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.56.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.56.2. Set the 'ServerName' directive globally to suppress this message
[Tue Mar 22 13:47:30.214003 2022] [core:warn] [pid 15] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Mar 22 13:47:30.223675 2022] [mpm_prefork:notice] [pid 15] AH00163: Apache/2.4.52 (Debian) PHP/7.4.28 configured -- resuming normal operations
[Tue Mar 22 13:47:30.223707 2022] [core:notice] [pid 15] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
Dev-Wiki commented 2 years ago

我已经在本地复现了这个问题,是一个命令行安装时的数据目录问题,现在你可以临时把安装时的环境变量,然后再启动新的容器

TYPECHO_DB_FILE: 615a4d4dabd49.db

改成

TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db

后续我会在代码中修复

按照此方式重新安装一个新的, 测试不会生成数据库文件

image

joyqi commented 2 years ago

我在本地测试是可以的,你得把原来的容器和service都删掉

Dev-Wiki commented 2 years ago

我在本地测试是可以的,你得把原来的容器和service都删掉

我就担心有问题 所以重新创建的. 原来的都删除了, 目录都改了, 原来是的 typecho1, 新的是 devwikiblog

Dev-Wiki commented 2 years ago

我在本地测试是可以的,你得把原来的容器和service都删掉

在次重新安装, 仍旧不行, 控制台输出: image

安装的docker compose Snipaste_2022-03-22_14-40-02

需要手动创建 blog.db 文件么?

Dev-Wiki commented 2 years ago

我已经在本地复现了这个问题,是一个命令行安装时的数据目录问题,现在你可以临时把安装时的环境变量,然后再启动新的容器

TYPECHO_DB_FILE: 615a4d4dabd49.db

改成

TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db

后续我会在代码中修复

这样修改 仍旧会提示无法找到数据库

joyqi commented 2 years ago

我不知道是不是你的nas环境问题,在我本地测试了好几次都是可以正常创建的

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - ./typecho:/app/usr 
    environment:
      TIMEZONE: Asia/Shanghai
      MEMORY_LIMIT: 100m
      MAX_POST_BODY: 50m
      TYPECHO_INSTALL: 1
      TYPECHO_DB_ADAPTER: Pdo_SQLite
      TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db
      TYPECHO_DB_PREFIX: db_
      TYPECHO_SITE_URL: https://blog.devwiki.net
      TYPECHO_USER_NAME: joyqi
      TYPECHO_USER_MAIL: magike.net@gmail.com
      TYPECHO_USER_PASSWORD: 123456
    ports:
      - "2080:80"

截屏2022-03-22 下午6 00 17

Dev-Wiki commented 2 years ago

我不知道是不是你的nas环境问题,在我本地测试了好几次都是可以正常创建的

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - ./typecho:/app/usr 
    environment:
      TIMEZONE: Asia/Shanghai
      MEMORY_LIMIT: 100m
      MAX_POST_BODY: 50m
      TYPECHO_INSTALL: 1
      TYPECHO_DB_ADAPTER: Pdo_SQLite
      TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db
      TYPECHO_DB_PREFIX: db_
      TYPECHO_SITE_URL: https://blog.devwiki.net
      TYPECHO_USER_NAME: joyqi
      TYPECHO_USER_MAIL: magike.net@gmail.com
      TYPECHO_USER_PASSWORD: 123456
    ports:
      - "2080:80"

截屏2022-03-22 下午6 00 17

如果我不带那个路径反而是能安装成功的, 但是找不到 db文件 image

Dev-Wiki commented 2 years ago

@joyqi 我这边测试了下, 使用 威联通 nas 自己的 docker 创建按钮 和步骤来创建是可以自动生成 .db 文件的, 后续我会把创建步骤写个文档出来. 非常感谢~ 但是使用 docker-compose方式 不行, 还是无法创建db文件. 如果有时间 还是建议查找一下原因. 这是威联通的nas的 试用入口: QuTScloud Online Demo | QNAP

Dev-Wiki commented 2 years ago
Typecho 1.2.0
PHP 7.4.28
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.40.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.40.2. Set the 'ServerName' directive globally to suppress this message
[Thu Sep 08 00:21:56.921687 2022] [core:warn] [pid 15] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Thu Sep 08 00:21:56.931197 2022] [mpm_prefork:notice] [pid 15] AH00163: Apache/2.4.53 (Debian) PHP/7.4.28 configured -- resuming normal operations
[Thu Sep 08 00:21:56.931235 2022] [core:notice] [pid 15] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'

这个503 报错内容如上 @joyqi

Dev-Wiki commented 2 years ago

我不知道是不是你的nas环境问题,在我本地测试了好几次都是可以正常创建的

version: '3'

services:    
  typecho-server:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - ./typecho:/app/usr 
    environment:
      TIMEZONE: Asia/Shanghai
      MEMORY_LIMIT: 100m
      MAX_POST_BODY: 50m
      TYPECHO_INSTALL: 1
      TYPECHO_DB_ADAPTER: Pdo_SQLite
      TYPECHO_DB_FILE: /app/usr/615a4d4dabd49.db
      TYPECHO_DB_PREFIX: db_
      TYPECHO_SITE_URL: https://blog.devwiki.net
      TYPECHO_USER_NAME: joyqi
      TYPECHO_USER_MAIL: magike.net@gmail.com
      TYPECHO_USER_PASSWORD: 123456
    ports:
      - "2080:80"

截屏2022-03-22 下午6 00 17

如果我不带那个路径反而是能安装成功的, 但是找不到 db文件 image

上述的问题原因是: 使用 docker-compose 方式在威联通 nas上安装不会自动创建 config.inc.php, 我手动拷贝了该文件, 然后可以正常安装了. 不再提示招不到文件的问题.

但是 会出现访问非主页的时候提示 500, 即错误:

Typecho 1.2.0
PHP 7.4.28
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.40.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.29.40.2. Set the 'ServerName' directive globally to suppress this message
[Thu Sep 08 00:21:56.921687 2022] [core:warn] [pid 15] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Thu Sep 08 00:21:56.931197 2022] [mpm_prefork:notice] [pid 15] AH00163: Apache/2.4.53 (Debian) PHP/7.4.28 configured -- resuming normal operations
[Thu Sep 08 00:21:56.931235 2022] [core:notice] [pid 15] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
joyqi commented 2 years ago

这这里的日志并不是错误日志,只是打印了系统日志。你可以进入容器,在 config.inc.php 里加入

define('__TYPECHO_DEBUG__', true);

然后访问页面,看具体的报错信息

Dev-Wiki commented 2 years ago
define('__TYPECHO_DEBUG__', true);

好的 晚上回去试试

Dev-Wiki commented 2 years ago

这这里的日志并不是错误日志,只是打印了系统日志。你可以进入容器,在 config.inc.php 里加入

define('__TYPECHO_DEBUG__', true);

然后访问页面,看具体的报错信息

添加之后打印的日志是:

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database
Typecho\Db\Adapter\SQLException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /app/var/Typecho/Db/Adapter/Pdo.php:111
Stack trace:
#0 /app/var/Typecho/Db.php(391): Typecho\Db\Adapter\Pdo->query('UPDATE db_conte...', Object(PDO), 2, 'UPDATE', 'db_contents')
#1 /app/usr/themes/handsome/functions_mine.php(897): Typecho\Db->query(Object(Typecho\Db\Query))
#2 /app/usr/themes/handsome/post.php(53): get_post_view(Object(Widget\Archive))
#3 /app/var/Widget/Archive.php(1415): require_once('/app/usr/themes...')
#4 /app/var/Typecho/Router.php(99): Widget\Archive->render()
#5 /app/index.php(23): Typecho\Router::dispatch()
#6 {main}

但是我看了下权限是正常的, 通用不是 docker-compose 方式安装的, 就一切正常, 他们的权限组 和 用户组 都一样:

image

image

别的 docker镜像, 我在nas上使用 docker-compose 方式安装正常

Dev-Wiki commented 2 years ago

@joyqi

joyqi commented 1 year ago

我注意到你的db文件所有者是admin,而其它文件是33

Dev-Wiki commented 1 year ago

我注意到你的db文件所有者是admin,而其它文件是33

我知道这个区别, 但是直接使用nas ui上操作创建的 所有者也是 admin, 数据写入都正常. 我用别的 docker 镜像 需要写数据库的也是使用docker compose 方式部署的,, 也是所有者 admin 写入正常.

image