前排提示,commento太久远了,不建议使用,我早就改成了Waline,此文仅作纪念。

本文依据雨云-新一代服务提供商进行操作

官方文档:Self-hosting · Commento

通过docker-compose创建

方式一、commento和pgsql一起创建

这种方式适合没有创建过pgsql容器的用户

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
version: "3"

services:
server:
image: registry.gitlab.com/commento/commento
ports:
- 8080:8080
environment:
COMMENTO_ORIGIN: localhost:8080 #根据实际情况填写
COMMENTO_PORT: 8080
#postgres:postgres分别是用户名和密码,要与下面的POSTGRES_USER和POSTGRES_PASSWORD一致
COMMENTO_POSTGRES: postgres://postgres:postgres@db:5432/commento?sslmode=disable
depends_on:
- db
networks:
- db_network
db:
image: postgres
#ports: 这个官方上的文档是没加的,我也没试行不行,我建议是加上,不然没法用navicate之类的工具连接数据库
# - 5432:5432
environment:
POSTGRES_DB: commento
POSTGRES_USER: postgres #根据实际情况填写
POSTGRES_PASSWORD: postgres #根据实际情况填写
networks:
- db_network
volumes:
- postgres_data_volume:/var/lib/postgresql/data

networks:
db_network:

volumes:
postgres_data_volume:
  • but,会报错,显示/var/lib/postgresql/data下有数据,需要初始化,但是这时候pgsql容器是无法运行的,无法进入容器内部对其进行初始化操作,反正我是不知道其他方法怎么做,我是直接改为其他的目录,比如将/data删掉(笑)
  • 这种方式最好是设置ports,不然之后想查数据库只能用命令行来查了,设置ports后连接navicat就很方便了
运行

执行docker-compose up -d即可

默认生成的commento服务容器名为hexo-commento-server-1hexo-commento-postgresql-1,可自行使用docker rename old_container_name new_container_name修改容器名称

方式二、只创建commento容器

此方式适合之前已经创建过pgsql容器的用户,切记:pgsql镜像需是9.6版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: '3'

services:
server:
image: registry.gitlab.com/commento/commento
ports:
- 8080:8080
environment:
COMMENTO_ORIGIN: localhost:8080
COMMENTO_PORT: 8080
COMMENTO_POSTGRES: postgres://pgsql_username:pgql_password@your_IP:5432/your_database_name?sslmode=disable
networks:
- my_custom_network #此网络为创建pgsql容器时定义的网络,若当时没定义,可看下文定义并连接

networks:
my_custom_network:
driver: bridge

volumes:
postgres_data_volume:

创建自定义网络(如果尚未创建):

1
docker network create --driver bridge my_custom_network

将容器连接到自定义网络:

1
docker network connect my_custom_network pgsql_container

查看容器的网络

1
docker inspect <container_id_or_name> --format='{{json .NetworkSettings.Networks}}'
运行

执行docker-compose up -d即可

默认生成的commento服务容器名为hexo-commento-server-1,可自己改名

1
docker rename hexo-commento-server-1 hexo-commento

postgresql问题

之前因为一直在使用MySQL,想尝试pgSQL,所以经过查找,发现Commento的评论系统对pgSQL的支持很友好,而且可以直接用Docker安装,所以选择了Commento

创建数据库若报错

1
ERROR:  source database "template1" is being accessed by other users 

解决:进入postgresql执行一行命令

1
2
root@2e45052415fc:/# pgsql -U postgres
postgres=# select pg_terminate_backend(pid) from pg_stat_activity where DATNAME = 'template1';

版本问题

commento的pq版本太低,只能连接9.6版本以下的pgsql,因为从10版本开始使用scram-sha-256身份认证。

若是有办法更新pq版本,那最好还是用最新的pgsql,我不懂go语言,而且是直接拉取的镜像,改不了,所以就将就着用了。