docker-nodebb
docker-nodebb copied to clipboard
NodeBB forum software Docker image with persistent storage support. k8s tested.
in the Docker
NodeBB Forum Software is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions, while still making sure to be compatible with older browsers.
Available tags
Stable releases
latest
, v1.15.1
, v1.15.0
, v1.14.3
, v1.14.2
...
Beta releases
beta
, v1.15.1-beta.0
, v1.15.0-rc.4
, v1.15.0-rc.3
, v1.15.0-beta.30
...
Images delivers through two registries, DockerHub and GitHub Container Registry.
Features
- Auto installation
- Auto upgrade when you update image
- Persistant storage support (official NodeBB image haven't that)
Quick start
Run using Mongo database
docker run --name nodebb -d -p 4567:4567 \
-v ./data:/data \
-e URL="http://mynodebb.com" \
-e DATABASE="mongo" \
-e DB_HOST="host.docker.internal" \
-e DB_USER="mongo_user" \
-e DB_PASSWORD="mongo_pass" \
-e DB_PORT="27017" \
nibrev/nodebb:latest
Run using Redis
docker run --name nodebb -d -p 4567:4567 \
-v ./data:/data \
-e URL="http://localhost" \
-e DATABASE="redis" \
-e DB_NAME="0" \
-e DB_HOST="host.docker.internal" \
-e DB_PASSWORD="redis_pass" \
-e DB_PORT="6379" \
nibrev/nodebb:latest
Run using docker-compose
There is basic docker-compose example to run NodeBB using Redis database.
version: '3.1'
services:
nodebb:
image: ghcr.io/rez0n/nodebb:latest
restart: unless-stopped
environment:
URL: "http://localhost"
DATABASE: "redis"
DB_NAME: "0"
DB_HOST: "redis"
DB_PORT: "6379"
volumes:
- ./data/nodebb:/data
networks:
- nodebb
ports:
- "4567:4567"
redis:
image: redis
restart: unless-stopped
volumes:
- ./data/redis:/data
networks:
- nodebb
networks:
nodebb:
driver: bridge
Run in k8s
This image was adjusted to run in k8s clusters. Example manifest below, you can find full manifests in the k8s-manifests directory.
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: beta-nodebb-pv-claim
namespace: nodebb
labels:
app: nodebb
spec:
storageClassName: local-path
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nodebb
namespace: nodebb
labels:
app: nodebb
spec:
selector:
matchLabels:
app: nodebb
tier: frontend
strategy:
type: Recreate
template:
metadata:
labels:
app: nodebb
tier: frontend
spec:
containers:
- image: nibrev/nodebb:beta
imagePullPolicy: Always
name: nodebb
env:
- name: DATABASE
value: "redis"
- name: DB_NAME
value: "1"
- name: DB_HOST
value: redis
- name: DB_PORT
value: "6379"
- name: URL
value: "http://node.157.230.78.171.nip.io"
ports:
- containerPort: 4567
name: nodebb
volumeMounts:
- name: beta-nodebb-pv
mountPath: /data
volumes:
- name: beta-nodebb-pv
persistentVolumeClaim:
claimName: beta-nodebb-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: nodebb
namespace: nodebb
labels:
app: nodebb
spec:
selector:
app: nodebb
tier: frontend
ports:
- port: 80
targetPort: 4567
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nodebb
namespace: nodebb
spec:
rules:
- host: node.157.230.78.171.nip.io
http:
paths:
- path: /
backend:
serviceName: nodebb
servicePort: 80