如何在一个Docker容器里安装Discourse

大家好,今天我们将会学习如何利用Docker平台安装Discourse。Discourse是一个完全开源的讨论平台,以未来十年的互联网理念设计,拥有一个邮件列表,一个论坛和一个长篇聊天室。不管从技术角度还是社会学角度,如今要体验一个现代的、勃勃生机的、完全开源的互联网讨论平台,Discourse都是一个不错的途径。Discourse是一个简单、简明、简易的讨论方式。它确实是一个令人称赞的平台,对于互联网上各种各样的论坛来说,提供了一个上手可用的很酷的服务。

Docker是一个开源的、可以将任何应用以轻量级容器的方式打包、传输和运行的开放平台。Docker容器技术使得可以更加方便和容易构建Discourse。

所以,下面是一些快速且容易的步骤,用来在一个Docker环境里面安装Discourse。

 

1. 安装Docker

首先,我们需要确认我们的主机操作系统已经安装了Docker。我们需要在shell或者终端运行以下命令安装Docker。

 

在Ubuntu上

docker安装包在Ubuntu的仓库里面是可用的,所以我们将会使用apt管理器安装,以sudo或者root模式

  1. <span class="com"># apt-get docker</span>

 

在CentOS 7上

在CentOS 7的主机上,我们使用yum管理器安装docker,因为CentOS的仓库里同样有docker安装包

  1. <span class="com"># yum install docker</span>

如何在一个Docker容器里安装Discourse

 

2. 设定交换内存

如果你的RAM容量小于1GB,那么确保升级你的系统达到1GB或者以上,Discourse不能在512MB的RAM下安装。如果你现在准备好了安装Discourse,根据下面的步骤为你的VPS(Virtual Private Servers)或者服务器设定交换内存:

运行下面的命令,创建一个空的交换文件。

  1. <span class="com"># install -o root -g root -m 0600 /dev/null /swapfile</span>

如果你想你的交换内存达到1GB,那么执行下面的步骤,并且跳过接下来的第二步。

  1. <span class="com"># dd if=/dev/zero of=/swapfile bs=1k count=1024k</span>

如果你想达到2GB,跳过上一步,跟着下面做

  1. <span class="com"># dd if=/dev/zero of=/swapfile bs=1k count=2014k</span>

接着,我们指定交换内存为swapfile

  1. <span class="com"># mkswap /swapfile</span>

运行下面的命令激活交换内存

  1. <span class="com"># swapon /swapfile</span>

现在,我们将其添加到文件系统分区表里,这样重启之后就自动挂载了。

  1. <span class="com"># echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab</span>

设置swappiness参数为10,这样交换内存仅作为一个紧急缓冲区用。

  1. <span class="com"># sudo sysctl -w vm.swappiness=10</span>
  2. <span class="com"># echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf</span>

 

3. 安装Discourse

在我们的主机上安装好Docker后,我们将会安装Discourse。现在,我们从官方的Discourse GitHub仓库克隆一份到/var/discourse目录下。我们需要运行下面的命令完成这一步。

  1. <span class="com"># mkdir /var/discourse/</span>
  2. <span class="com"># cd /var/discourse/</span>
  3. <span class="com"># git clone https://github.com/discourse/discourse_docker.git /var/discourse/</span>

克隆好仓库后,我们给discourse服务器复制配置文件

  1. <span class="com"># cp samples/standalone.yml containers/app.yml</span>

如何在一个Docker容器里安装Discourse

 

4. 配置Discourse

接下来,我们用自己喜欢的文本编辑器,编辑容器目录下的discourse配置文件app.yml

  1. <span class="com"># nano containers/app.yml</span>

现在,我们需要将开发者邮箱地址DISCOURSEDEVELOPEREMAILS修改为自己的,如下。

  1. <span class="pln">DISCOURSE_DEVELOPER_EMAILS</span><span class="pun">:</span><span class="str">'[email protected]'</span>

然后,我们设置主机名为服务器的域名。

  1. <span class="pln">DISCOURSE_HOSTNAME</span><span class="pun">:</span><span class="str">'discourse.linoxide.com'</span>

接着,设置放在相同的discourse主机或vps上的SMTP服务器的认证信息。这些SMTP设置用于你的Discourse发送邮件。

  1. <span class="pln">DISCOURSE_SMTP_ADDRESS</span><span class="pun">:</span><span class="pln"> smtp</span><span class="pun">.</span><span class="pln">linoxide</span><span class="pun">.</span><span class="pln">com</span>
  2. <span class="pln">DISCOURSE_SMTP_PORT</span><span class="pun">:</span><span class="lit">587</span><span class="com"># (可选)</span>
  3. <span class="pln">DISCOURSE_SMTP_USER_NAME</span><span class="pun">:</span><span class="pln"> admin@linoxide</span><span class="pun">.</span><span class="pln">com </span><span class="com"># (可选)</span>
  4. <span class="pln">DISCOURSE_SMTP_PASSWORD</span><span class="pun">:</span><span class="pln"> test123 </span><span class="com"># (可选)</span>

如何在一个Docker容器里安装Discourse

如果你在使用一个1GB的Discourse,设定UNICORNWORKERS为2,dbshared_buffers为128MB,这样你会有更多的内存空间。

运行Discourse需要强制性地创建一个邮件服务器。如果你已经有一个服务器了那就好办多了,我们可以使用它的认证信息。如果你没有现成的邮件服务器,或者你不知道那是什么。没关系,可以在Mandrill (或MailgunMailjet)创建一个免费的帐号,然后使用其提供的认证信息。

 

5. 启动Discourse应用

配置完discourse的配置文件后,我们当然是想启动Discourse服务器。首先,在/var/discourse/目录下运行下面的命令,加载discourse引导程序。

  1. <span class="com"># ./launcher bootstrap app</span>

如何在一个Docker容器里安装Discourse

上述命令可能会花去几分钟时间,会自动配置我们的Discourse环境。然后,该进程完成后,我们需要运行下面的命令启动Discourse App

  1. <span class="com"># ./launcher start app</span>

如何在一个Docker容器里安装Discourse

如果一切都正常,我们就能使用惯用的浏览器来访问我们新鲜出炉的 Discourse 的 Web 界面了: http://ip-address/ 或 http://discourse.linoxide.com/ 。然后,我们就可以创建一个新账号并成为管理员。

如何在一个Docker容器里安装Discourse

 

维护

这里往下是/var/discourse/目录里的 launcher 命令的用法,它可以用于我们在Docker 容器里面控制和维护Disourse。

  1. <span class="pun">用法:</span><span class="pln"> launcher </span><span class="pun">命令</span><span class="pun">配置</span><span class="pun">[--</span><span class="pln">skip</span><span class="pun">-</span><span class="pln">prereqs</span><span class="pun">]</span>
  2. <span class="pun">命令:</span>
  3. <span class="pln">start</span><span class="pun">:</span><span class="pun">启动/初始化一个容器</span>
  4. <span class="pln">stop</span><span class="pun">:</span><span class="pun">停止一个运行的容器</span>
  5. <span class="pln">restart</span><span class="pun">:</span><span class="pun">重启一个容器</span>
  6. <span class="pln">destroy</span><span class="pun">:停止并删除一个容器</span>
  7. <span class="pln">enter</span><span class="pun">:</span><span class="pun">使用</span><span class="pln"> nsenter </span><span class="pun">进入容器</span>
  8. <span class="pln">ssh</span><span class="pun">:</span><span class="pun">在一个运行的容器中启动一个</span><span class="pln"> bash shell</span>
  9. <span class="pln">logs</span><span class="pun">:</span><span class="pun">容器的</span><span class="typ">Docker</span><span class="pln"> l</span><span class="pun">日志</span>
  10. <span class="pln">mailtest</span><span class="pun">:</span><span class="pun">在容器中测试邮件设置</span>
  11. <span class="pln">bootstrap</span><span class="pun">:</span><span class="pun">基于配置模版来引导一个容器</span>
  12. <span class="pln">rebuild</span><span class="pun">:</span><span class="pun">重建一个容器(摧毁旧的,初始化,启动新的)</span>
  13. <span class="pln">cleanup</span><span class="pun">:</span><span class="pun">清理所有停止了</span><span class="lit">24</span><span class="pun">小时以上的容器</span>
  14. <span class="pun">选项:</span>
  15. <span class="pun">--</span><span class="pln">skip</span><span class="pun">-</span><span class="pln">prereqs </span><span class="pun">不检查前置需求</span>
  16. <span class="pun">--</span><span class="pln">docker</span><span class="pun">-</span><span class="pln">args </span><span class="pun">当运行</span><span class="pln"> docker </span><span class="pun">时,展开并传入参数</span>

 

总结

哈哈!我们已经成功使用Docker技术安装了Discourse。Docker技术使得Discourse十分容易安装在任何平台,并且包含所有的要求。我们需要自己的邮件服务器或者邮件服务器的证书来启动它。对于便捷的现代邮件列表,论坛来说,Discourse是一个伟大的平台。(最后这句有些别扭)

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里


via: http://linoxide.com/how-tos/install-discourse-docker-container/

作者:Arun Pyasi 译者:wi-cuckoo 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出