TranslateProject/translated/tech/20150417 How to Install Discourse in a Docker Container.md
2015-04-27 11:27:44 +08:00

7.1 KiB
Raw Blame History

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

大家好今天我们将会学习如何利用Docker平台安装Discourse。Discourse是完全开源的讨论平台为互联网的下一个十年而搭建拥有一个邮件列表一个论坛和一个long-form(此处不明白聊天室。不管从技术角度还是社会学角度当你试图去重新想象当今一个现代的可持续的完全开源的互联网讨论平台该是什么样子Discourse都是一个不错的途径。Discourse简洁直接之于讨论。它确实是一个令人称赞的平台对于互联网上各种各样的讨论来说提供了在机器之外如此酷的一个服务。Docker是一个开源平台提供打包运输和运行任何应用的平台如一个轻量级容器。Docker容器技术使得Discourse更加方便和容易去建立应用程序。

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

1. 安装Docker

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

在Ubuntu上

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

# apt-get docker

在CentOS 7上

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

# yum install docker

Installing Docker

2. 设定交换内存

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

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

# install -o root -g root -m 0600 /dev/null /swapfile

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

# dd if=/dev/zero of=/swapfile bs=1k count=1024k

如果你想达到2GB跳过上面的所有步骤跟着下面做

# dd if=/dev/zero of=/swapfile bs=1k count=2014k

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

#mkswap /swapfile

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

#swapon /swapfile

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

# echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab

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

# sudo sysctl -w vm.swappiness=10
# echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

3. 安装Discourse

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

# mkdir /var/discourse/

# cd /var/discourse/

# git clone https://github.com/discourse/discourse_docker.git /var/discourse/

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

# cp samples/standalone.yml containers/app.yml

Cloning Discourse Docker

4. 配置Discourse

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

# nano containers/app.yml

现在我们需要设置开发者的邮箱地址为DISCOURSE_DEVELOPER_EMAILS如下。

DISCOURSE_DEVELOPER_EMAILS: 'arun@linoxide.com'

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

DISCOURSE_HOSTNAME: 'discourse.linoxide.com'

接着为每个托管在相同discourse主机或者vps上的SMTP服务器设定邮箱证书。SMTP设置需要从你的Discourse发送邮件

DISCOURSE_SMTP_ADDRESS: smtp.linoxide.com
DISCOURSE_SMTP_PORT: 587 # (optional)
DISCOURSE_SMTP_USER_NAME: admin@linoxide.com # (optional)
DISCOURSE_SMTP_PASSWORD: test123 # (optional)

Discourse 配置

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

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

5. 启动Discourse应用

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

# ./launcher bootstrap app

Starting Discourse Bootstrap

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

#./launch start app

Starting Discourse

维护

这里往下是/var/discourse/目录里加载命令的使用这使得我们可以承担维护的任务通过Docker 容器控制Disourse。这里不太明白原文表达意思

Usage: launcher COMMAND CONFIG [--skip-prereqs]
Commands:
start: Start/initialize a container
stop: Stop a running container
restart: Restart a container
destroy: Stop and remove a container
enter: Use nsenter to enter a container
ssh: Start a bash shell in a running container
logs: Docker logs for container
mailtest: Test the mail settings in a container
bootstrap: Bootstrap a container for the config based on a template
rebuild: Rebuild a container (destroy old, bootstrap, start new)
cleanup: Remove all containers that have stopped for > 24 hours

Options:
--skip-prereqs Don't check prerequisites
--docker-args Extra arguments to pass when running docker

总结

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


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

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

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