A modern, open-source, collaborative music app
|
há 8 anos atrás | |
---|---|---|
backend | há 8 anos atrás | |
frontend | há 8 anos atrás | |
tools | há 8 anos atrás | |
.editorconfig | há 8 anos atrás | |
.gitignore | há 8 anos atrás | |
LICENCE | há 8 anos atrás | |
README.md | há 8 anos atrás | |
docker-compose-production.yml | há 8 anos atrás | |
docker-compose.yml | há 8 anos atrás |
This is a rewrite of the original Musare in NodeJS, Express, SocketIO and VueJS. Everything is ran in it's own docker container.
The frontend is a vue-cli generated, vue-loader single page app, that's served over Nginx. The Nginx server not only serves the frontend, but also serves as a load balancer for requests going to the backend.
The backend is a scalable NodeJS / Redis / MongoDB app. Each backend server handles a group of SocketIO connections. User sessions are stored in a central Redis server. All data is stored in a central MongoDB server. The Redis and MongoDB servers are replicated to several secondary nodes, which can become the primary node if the current primary node goes down.
Once you've installed the required tools:
git clone https://github.com/MusareNode/MusareNode.git
cd MusareNode
cp backend/config/template.json backend/config/default.json
The
secret
key can be whatever. It's used by express's session module. Theapis.youtube.key
value can be obtained by setting up a YouTube API Key.
docker-compose build
docker-compose up -d mongo mongoclient redis
docker-compose up backend frontend
You should now be able to begin development! The backend is auto reloaded when
you make changes and the frontend is auto compiled and live reloaded by webpack
when you make changes. You should be able to access Musare in your local browser
at http://<docker-machine-ip>:8080/
where <docker-machine-ip>
can be found below:
Docker for Windows / Mac: This is just localhost
Docker ToolBox: The output of docker-machine ip default
Below is a list of helpful tips / solutions we've collected while developing MusareNode.
Docker Toolbox usually only gives VirtualBox access to C:/Users
of your
local machine. So if your code is located elsewere on your machine,
you'll need to tell Docker Toolbox how to find it. You can use variations
of the following commands to give Docker Toolbox access to those files.
docker-machine stop default
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" sharedfolder add default --name "d/Projects/MusareNode" --hostpath "D:\Projects\MusareNode" --automount
docker-machine start default && docker-machine ssh default
Tell boot2docker to mount our volume at startup, by appending to its startup script
sudo tee -a /mnt/sda1/var/lib/boot2docker/profile >/dev/null <<EOF
mkdir -p /d/Projects/MusareNode
mount -t vboxsf -o uid=1000,gid=50 d/Projects/MusareNode /d/Projects/MusareNode
EOF
docker-machine restart default
Some people have had issues while trying to execute the docker-compose
command.
To fix this, you will have to run docker-machine env default
.
This command will print various variables.
At the bottom, it will say something similar to @FOR /f "tokens=*" %i IN ('docker-machine env default') DO @%i
.
Run this command in your shell. You will have to do this command for every shell you want to run docker-compose
in (every session).
npm install nodemon -g
npm install webpack -g
npm install node-gyp -g
.
In both frontend
and backend
folders, do npm install
.
nodemon backend/index.js
You can call Toasts using our custom package, vue-roaster
, using the following code:
import { Toast } from 'vue-roaster';
Toast.methods.addToast('', 0);