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

简介:

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

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

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

1. 安装Docker

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

在Ubuntu上

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


 
 
  1. # apt-get docker

在CentOS 7上

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


 
 
  1. # yum install docker

Installing Docker

Installing Docker

2. 设定交换内存

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

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


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

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


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

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


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

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


 
 
  1. # mkswap /swapfile

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


 
 
  1. # swapon /swapfile

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


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

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


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

3. 安装Discourse

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


 
 
  1. # mkdir /var/discourse/
  2. # cd /var/discourse/
  3. # git clone https://github.com/discourse/discourse_docker.git /var/discourse/

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


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

Cloning Discourse Docker

Cloning Discourse Docker

4. 配置Discourse

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


 
 
  1. # nano containers/app.yml

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


 
 
  1. DISCOURSE_DEVELOPER_EMAILS: 'arun@linoxide.com'

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


 
 
  1. DISCOURSE_HOSTNAME: 'discourse.linoxide.com'

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


 
 
  1. DISCOURSE_SMTP_ADDRESS: smtp.linoxide.com
  2. DISCOURSE_SMTP_PORT: 587 # (可选)
  3. DISCOURSE_SMTP_USER_NAME: admin@linoxide.com # (可选)
  4. DISCOURSE_SMTP_PASSWORD: test123 # (可选)

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

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

5. 启动Discourse应用

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


 
 
  1. # ./launcher bootstrap app

Starting Discourse Bootstrap

Starting Discourse Bootstrap

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


 
 
  1. # ./launcher start app

Starting Discourse

Starting Discourse

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

维护

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


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

总结

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


原文发布时间为:2015-06-06

本文来自云栖社区合作伙伴“Linux中国”

目录
相关文章
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
918 6
|
9月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
846 6
|
9月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
741 2
|
9月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1205 4
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
490 56
|
Linux 开发者 Docker
如何构建在 Docker 容器中运行命令?
【1月更文挑战第6天】
376 0
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
632 16