Added support for Docker, Docker-Compose

- updated config.js template to support environment variables
This commit is contained in:
Alexander Wong 2020-12-07 12:57:20 -07:00
parent 1c76daa166
commit 734b11c926
No known key found for this signature in database
GPG Key ID: E90E5D6448C2C663
5 changed files with 69 additions and 19 deletions

1
.dockerignore Symbolic link
View File

@ -0,0 +1 @@
.gitignore

15
Dockerfile Normal file
View File

@ -0,0 +1,15 @@
# Use LTS nodejs base image
FROM node:14.15.1-alpine
# video support dependency
RUN apk add ffmpeg
# install npm dependencies and copy project
WORKDIR /teddit
COPY package.json /teddit/
COPY package-lock.json /teddit/
RUN npm install --no-optional
COPY config.js.template /teddit/config.js
COPY . /teddit/
CMD npm start

View File

@ -48,6 +48,16 @@ Community instances:
## Installation ## Installation
### Docker
Using [`docker-compose`](https://github.com/docker/compose):
```bash
docker-compose build
docker-compose up
```
### Manual
1. Install [node.js](https://nodejs.org/en/) 1. Install [node.js](https://nodejs.org/en/)
1. It's highly recommended that you install [redis-server](https://redis.io/) because it works as a cache for Reddit API calls. If you want to support videos, install [ffmpeg](https://ffmpeg.org/)\ 1. It's highly recommended that you install [redis-server](https://redis.io/) because it works as a cache for Reddit API calls. If you want to support videos, install [ffmpeg](https://ffmpeg.org/)\
For example:\ For example:\

View File

@ -1,23 +1,23 @@
const config = { const config = {
domain: '127.0.0.1', // Or for example 'teddit.net' domain: process.env.DOMAIN || '127.0.0.1', // Or for example 'teddit.net'
reddit_app_id: 'H6-HjZ5pUPjaFQ', // You should obtain your own Reddit app ID. For testing purposes it's okay to use this project's default app ID. Create your Reddit app here: https://old.reddit.com/prefs/apps/. Make sure to create an "installed app" type of app. reddit_app_id: process.env.REDDIT_APP_ID || 'H6-HjZ5pUPjaFQ', // You should obtain your own Reddit app ID. For testing purposes it's okay to use this project's default app ID. Create your Reddit app here: https://old.reddit.com/prefs/apps/. Make sure to create an "installed app" type of app.
cert_dir: '', // For example '/home/teddit/letsencrypt/live/teddit.net', if you are using https. No trailing slash. cert_dir: process.env.CERT_DIR || '', // For example '/home/teddit/letsencrypt/live/teddit.net', if you are using https. No trailing slash.
video_enabled: true, video_enabled: process.env.VIDEO_ENABLED !== "true" || true,
redis_enabled: true, // If disabled, does not cache Reddit API calls redis_enabled: process.env.REDIS_ENABLED !== "true" || true, // If disabled, does not cache Reddit API calls
redis_host: '127.0.0.1', redis_host: process.env.REDIS_HOST || '127.0.0.1',
redis_port: 6379, redis_port: process.env.REDIS_PORT || 6379,
ssl_port: 8088, ssl_port: process.env.SSL_PORT || 8088,
nonssl_port: 8080, nonssl_port: process.env.NONSSL_PORT || 8080,
listen_address: '0.0.0.0', listen_address: process.env.LISTEN_ADDRESS || '0.0.0.0',
https_enabled: false, https_enabled: process.env.HTTPS_ENABLED === "true" || false,
redirect_http_to_https: false, redirect_http_to_https: process.env.REDIRECT_HTTP_TO_HTTPS === "true" || false,
redirect_www: false, redirect_www: process.env.REDIRECT_WWW === "true" || false,
use_compression: true, use_compression: process.env.USE_COMPRESSION !== "true" || true,
use_view_cache: false, use_view_cache: process.env.USE_VIEW_CACHE === "true" || false,
use_helmet: false, // Recommended to be true when using https use_helmet: process.env.USE_HELMET === "true" || false, // Recommended to be true when using https
use_helmet_hsts: false, // Recommended to be true when using https use_helmet_hsts: process.env.USE_HELMET_HSTS === "true" || false, // Recommended to be true when using https
trust_proxy: false, // Enable trust_proxy if you are using reverse proxy like nginx trust_proxy: process.env.TRUST_PROXY === "true" || false, // Enable trust_proxy if you are using reverse proxy like nginx
trust_proxy_address: '127.0.0.1', trust_proxy_address: process.env.TRUST_PROXY_ADDRESS || '127.0.0.1',
setexs: { setexs: {
/**, /**,
* Redis cache expiration values (in seconds). * Redis cache expiration values (in seconds).

24
docker-compose.yml Normal file
View File

@ -0,0 +1,24 @@
version: "3.8"
services:
redis:
image: redis:6.0.9-alpine3.12
command: redis-server
environment:
- REDIS_REPLICATION_MODE=master
ports:
- "6379:6379"
networks:
- teddit_net
web:
build: .
environment:
- REDIS_HOST=redis
ports:
- 8080:8080
networks:
- teddit_net
depends_on:
- redis
networks:
teddit_net: