如何在一個Docker容器裡安裝Discourse
大家好,今天我們將會學習如何利用Docker平臺安裝Discourse。Discourse是一個完全開源的討論平臺,以未來十年的網際網路理念設計,擁有一個郵件列表,一個論壇和一個長篇聊天室。不管從技術角度還是社會學角度,如今要體驗一個現代的、勃勃生機的、完全開源的網際網路討論平臺,Discourse都是一個不錯的途徑。Discourse是一個簡單、簡明、簡易的討論方式。它確實是一個令人稱讚的平臺,對於網際網路上各種各樣的論壇來說,提供了一個上手可用的很酷的服務。
Docker是一個開源的、可以將任何應用以輕量級容器的方式打包、傳輸和執行的開放平臺。Docker容器技術使得可以更加方便和容易構建Discourse。
所以,下面是一些快速且容易的步驟,用來在一個Docker環境裡面安裝Discourse。
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
2. 設定交換記憶體
如果你的RAM容量小於1GB,那麼確保升級你的系統達到1GB或者以上,Discourse不能在512MB的RAM下安裝。如果你現在準備好了安裝Discourse,根據下面的步驟為你的VPS(Virtual 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
4. 配置Discourse
接下來,我們用自己喜歡的文字編輯器,編輯容器目錄下的discourse配置檔案app.yml
# nano containers/app.yml
現在,我們需要將開發者郵箱地址DISCOURSEDEVELOPEREMAILS修改為自己的,如下。
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 # (可選)
DISCOURSE_SMTP_USER_NAME: admin@linoxide.com # (可選)
DISCOURSE_SMTP_PASSWORD: test123 # (可選)
如果你在使用一個1GB的Discourse,設定UNICORNWORKERS為2,dbshared_buffers為128MB,這樣你會有更多的記憶體空間。
執行Discourse需要強制性地建立一個郵件伺服器。如果你已經有一個伺服器了那就好辦多了,我們可以使用它的認證資訊。如果你沒有現成的郵件伺服器,或者你不知道那是什麼。沒關係,可以在Mandrill (或Mailgun和 Mailjet)建立一個免費的帳號,然後使用其提供的認證資訊。
5. 啟動Discourse應用
配置完discourse的配置檔案後,我們當然是想啟動Discourse伺服器。首先,在/var/discourse/目錄下執行下面的命令,載入discourse載入程式。
# ./launcher bootstrap app
上述命令可能會花去幾分鐘時間,會自動配置我們的Discourse環境。然後,該程式完成後,我們需要執行下面的命令啟動Discourse App
# ./launcher start app
如果一切都正常,我們就能使用慣用的瀏覽器來訪問我們新鮮出爐的 Discourse 的 Web 介面了: http://ip-address/ 或 http://discourse.linoxide.com/ 。然後,我們就可以建立一個新賬號併成為管理員。
維護
這裡往下是/var/discourse/目錄裡的 launcher 命令的用法,它可以用於我們在Docker 容器裡面控制和維護Disourse。
用法: launcher 命令 配置 [--skip-prereqs]
命令:
start: 啟動/初始化一個容器
stop: 停止一個執行的容器
restart: 重啟一個容器
destroy:停止並刪除一個容器
enter: 使用 nsenter 進入容器
ssh: 在一個執行的容器中啟動一個 bash shell
logs: 容器的 Docker l日誌
mailtest: 在容器中測試郵件設定
bootstrap: 基於配置模版來引導一個容器
rebuild: 重建一個容器(摧毀舊的,初始化,啟動新的)
cleanup: 清理所有停止了24小時以上的容器
選項:
--skip-prereqs 不檢查前置需求
--docker-args 當執行 docker 時,展開並傳入引數
總結
哈哈!我們已經成功使用Docker技術安裝了Discourse。Docker技術使得Discourse十分容易安裝在任何平臺,並且包含所有的要求。我們需要自己的郵件伺服器或者郵件伺服器的證書來啟動它。對於便捷的現代郵件列表,論壇來說,Discourse是一個偉大的平臺。(最後這句有些彆扭)
via: http://linoxide.com/how-tos/install-discourse-docker-container/
作者:Arun Pyasi 譯者:wi-cuckoo 校對:wxy
相關文章
- docker容器安裝vimDocker
- docker容器安裝MySQLDockerMySql
- 把 Windows 裝進 Docker 容器裡WindowsDocker
- (四)Docker安裝使用容器Docker
- 如何在 Ubuntu Linux 16.04上安裝開源的 Discourse 論壇UbuntuLinux
- docker 安裝 Redis 主從容器DockerRedis
- docker 容器安裝配置 headscaleDocker
- [DPDK] Docker容器內安裝DPDKDocker
- 如何在Ubuntu裡安裝HelmUbuntu
- 如何在Windows上安裝DockerWindowsDocker
- 記錄一下docker desktop windows安裝,容器安裝等DockerWindows
- 如何在 Docker 容器中架設一個完整的 WordPress 站點Docker
- 如何在 CentOS 7 上安裝 DockerCentOSDocker
- Docker入門系列之一:在一個Docker容器裡執行指定的web應用DockerWeb
- Docker的安裝與容器應用部署Docker
- 如何在Docker容器中使用ArthasDocker
- docker 學習之一:docker 安裝Docker
- zabbix容器化安裝及監控docker應用Docker
- Docker容器學習梳理 - 基礎環境安裝Docker
- 在Ubuntu作業系統裡安裝DockerUbuntu作業系統Docker
- 如何在ubuntu[linux] 上用docker安裝SqlserverUbuntuLinuxDockerSQLServer
- 如何在Docker容器中執行GUI程式DockerGUI
- 如何在Docker容器中的Linux系統(Ubuntu + Centos Linux)裡面使用systemctlDockerLinuxUbuntuCentOS
- 測試開發之系統篇-Docker容器安裝Docker
- docker容器中安裝vim 、telnet、ifconfig命令Docker
- 如何在 Docker 容器之間設定網路Docker
- 如何在 Fedora 22 上面配置 Apache 的 Docker 容器ApacheDocker
- 如何互動式地建立一個Docker容器Docker
- Windows Server 2019 container容器化-Docker安裝WindowsServerAIDocker
- Is it going on-------------Docker容器的安裝以及基本的操作指令GoDocker
- 如何在一個 U 盤上安裝多個 Linux 發行版?Linux
- 如何在一個 U 盤上安裝多個 Linux 發行版Linux
- trino容器安裝
- 如何在Ubuntu上檢查一個軟體包是否安裝Ubuntu
- 如何在 Linux 上安裝/解除安裝一個檔案中列出的軟體包?Linux
- 安裝dockerDocker
- 安裝 dockerDocker
- docker 安裝Docker