Add docker files (#55)
* Add docker files * Improve docker-compose compatibility * Use Openstack's standard port * Use package ffmpeg-dev instead of ffmpeg * improve dockerfile and config * Add short docker guide * adhere to previous naming conventions * document former json comments * Undo init.sh approach to touching the db file * Make clear that it's about files on the host system * add local path specifier Co-authored-by: Denys Vitali <denys.vitali@swisscom.com>pull/61/head
parent
077bf165c7
commit
3ce40c51a6
|
@ -0,0 +1,38 @@
|
||||||
|
FROM node:10-alpine3.11
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# build audiowaveform from source
|
||||||
|
|
||||||
|
RUN apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev
|
||||||
|
RUN apk add zlib-static libpng-static boost-static
|
||||||
|
|
||||||
|
RUN apk add autoconf automake libtool gettext
|
||||||
|
RUN wget https://github.com/xiph/flac/archive/1.3.3.tar.gz
|
||||||
|
RUN tar xzf 1.3.3.tar.gz
|
||||||
|
RUN cd flac-1.3.3/ && ./autogen.sh
|
||||||
|
RUN cd flac-1.3.3/ && ./configure --enable-shared=no
|
||||||
|
RUN cd flac-1.3.3/ && make
|
||||||
|
RUN cd flac-1.3.3/ && make install
|
||||||
|
|
||||||
|
RUN git clone https://github.com/bbc/audiowaveform.git
|
||||||
|
RUN mkdir audiowaveform/build/
|
||||||
|
RUN cd audiowaveform/build/ && cmake -D ENABLE_TESTS=0 -D BUILD_STATIC=1 ..
|
||||||
|
RUN cd audiowaveform/build/ && make
|
||||||
|
RUN cd audiowaveform/build/ && make install
|
||||||
|
|
||||||
|
# install other requirements
|
||||||
|
|
||||||
|
RUN apk add graphicsmagick ffmpeg-dev ghostscript
|
||||||
|
|
||||||
|
# install node package
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# start app
|
||||||
|
|
||||||
|
EXPOSE 9666
|
||||||
|
CMD ["node", "spacedeck.js"]
|
||||||
|
|
12
README.md
12
README.md
|
@ -42,7 +42,7 @@ To install all node dependencies, run (do this once):
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
See [config/default.json](config/default.json)
|
See [config/default.json](config/default.json). Set `storage_local_path` for a local sqlite database or `storage_region`, `storage_bucket`, `storage_cdn` and `storage_endpoint` for AWS S3. `mail_provider` may be one of `console` or `smtp`. Also, omit a trailing `/` for the `endpoint`.
|
||||||
|
|
||||||
# Run (web server)
|
# Run (web server)
|
||||||
|
|
||||||
|
@ -63,6 +63,16 @@ For advanced media conversion:
|
||||||
By default, media files are uploaded to the ```storage``` folder.
|
By default, media files are uploaded to the ```storage``` folder.
|
||||||
The database is stored in ```database.sqlite``` by default.
|
The database is stored in ```database.sqlite``` by default.
|
||||||
|
|
||||||
|
# Run with Docker
|
||||||
|
|
||||||
|
- configure `config/default.json`
|
||||||
|
- configure `volumes` section inside `docker-compose.yml`
|
||||||
|
- point to `database.sqlite` on the host system
|
||||||
|
- `touch database.sqlite` if it not exists
|
||||||
|
- point to `storage/` on the host system
|
||||||
|
- `mkdir storage/` if it not exists
|
||||||
|
- start the container with `sudo docker-compose up -f docker-compose.yml -d --build`
|
||||||
|
|
||||||
# Hacking
|
# Hacking
|
||||||
|
|
||||||
To rebuild the frontend CSS styles:
|
To rebuild the frontend CSS styles:
|
||||||
|
|
|
@ -6,13 +6,11 @@
|
||||||
"invite_code": "top-sekrit",
|
"invite_code": "top-sekrit",
|
||||||
|
|
||||||
"storage_region": "eu-central-1",
|
"storage_region": "eu-central-1",
|
||||||
//"storage_bucket": "sdeck-development",
|
|
||||||
//"storage_cdn": "http://localhost:9123/sdeck-development",
|
|
||||||
//"storage_endpoint": "http://storage:9000",
|
|
||||||
|
|
||||||
"storage_bucket": "my_spacedeck_bucket",
|
"storage_bucket": "my_spacedeck_bucket",
|
||||||
"storage_cdn": "/storage",
|
"storage_cdn": "/storage",
|
||||||
"storage_local_path": "./storage",
|
"storage_local_path": "./storage",
|
||||||
|
"storage_local_db": "./database.sqlite",
|
||||||
|
|
||||||
"redis_mock": true,
|
"redis_mock": true,
|
||||||
"mongodb_host": "localhost",
|
"mongodb_host": "localhost",
|
||||||
|
@ -23,7 +21,6 @@
|
||||||
"admin_pass": "very_secret_admin_password",
|
"admin_pass": "very_secret_admin_password",
|
||||||
"phantom_api_secret": "very_secret_phantom_password",
|
"phantom_api_secret": "very_secret_phantom_password",
|
||||||
|
|
||||||
// Choose "console" or "smtp"
|
|
||||||
"mail_provider": "smtp",
|
"mail_provider": "smtp",
|
||||||
"mail_smtp_host": "your.smtp.host",
|
"mail_smtp_host": "your.smtp.host",
|
||||||
"mail_smtp_port": 465,
|
"mail_smtp_port": 465,
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
version: "2.0"
|
||||||
|
|
||||||
|
services:
|
||||||
|
spacedeck:
|
||||||
|
build: .
|
||||||
|
container_name: spacedeck
|
||||||
|
ports:
|
||||||
|
- "9666:9666"
|
||||||
|
volumes:
|
||||||
|
- /absolute/path/to/storage:/app/storage
|
||||||
|
- /absolute/path/to/database.sqlite:/app/database.sqlite
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const Umzug = require('umzug');
|
const Umzug = require('umzug');
|
||||||
|
const config = require('config')
|
||||||
|
|
||||||
function sequel_log(a,b,c) {
|
function sequel_log(a,b,c) {
|
||||||
console.log(a);
|
console.log(a);
|
||||||
|
@ -17,7 +18,7 @@ const sequelize = new Sequelize('database', 'username', 'password', {
|
||||||
},
|
},
|
||||||
|
|
||||||
// SQLite only
|
// SQLite only
|
||||||
storage: 'database.sqlite',
|
storage: config.get('storage_local_db'),
|
||||||
logging: sequel_log,
|
logging: sequel_log,
|
||||||
|
|
||||||
// http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
|
// http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
|
||||||
|
|
Loading…
Reference in New Issue