answer可以帮助你快速建立一个类似知乎的问答社区。搭建试了一下功能方面挺全面的,就是在搭建的时候遇到个bug:当mariadb容器重建后answer就连不上数据库。

具体点说就是先配置好一个mariadb10.5的容器,然后是可以正常安装的,安装完也能正常用,但是当你docker compose down掉容器再up -d启动一个新的容器后,answer就连不上数据库了,数据库的连接信息肯定不会错,因为压根就没改过。持久化的数据也肯定没有问题,我用的volume,并且看volume目录下面数据库文件就安静的躺在那儿,网络也没有特别的设置,就是compose创建的默认网络,所以应该是answer的bug。个人建议安装当前版本(1.0.1)数据库那块别选用mysql,就用默认的sqlite。。

安装docker、nginx、certbot:

apt -y update
apt -y install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

注:

新版本的docker自带compose子命令,无需额外安装docker-compose。

使用方面仅有一个-字符只差,新版使用docker compose命令,而旧版本使用docker-compose命令。

新建docker-compose.yml:

mkdir -p /opt/answer && cd /opt/answer && nano docker-compose.yml

写入如下配置:

version: '3.5'

services:
  answer:
    image: answerdev/answer
    restart: unless-stopped
    ports:
      - "127.0.0.1:9080:80"
    volumes:
      - answer-data:/data

volumes:
  answer-data:

启动:

docker compose up -d

配置nginx反向代理,新建nginx配置文件:

nano /etc/nginx/sites-available/answer

写入如下配置:

server {
    listen       80;
    server_name  answer.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:9080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用新的nginx配置:

ln -s /etc/nginx/sites-available/answer /etc/nginx/sites-enabled/answer

签发ssl证书:

certbot --nginx

首页预览:

问答页预览: