Skip to content

Commit

Permalink
Add Docker functionality for development
Browse files Browse the repository at this point in the history
- Add a Dockerfile
- Add a docker-compose.yml with configuration files
- Add sleep method for waiting until mongodb is ready
- Link current sources into container for live edit capability
  • Loading branch information
shockwavemk committed May 2, 2017
1 parent f5056d4 commit 75b937d
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 3 deletions.
2 changes: 2 additions & 0 deletions .dockerignore
@@ -0,0 +1,2 @@
node_modules
npm-debug.log
1 change: 1 addition & 0 deletions .gitignore
@@ -1,3 +1,4 @@
.idea
node_modules
standard.pem
stdEU.pem
Expand Down
15 changes: 15 additions & 0 deletions Dockerfile
@@ -0,0 +1,15 @@
FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]
29 changes: 29 additions & 0 deletions docker-compose.yml
@@ -0,0 +1,29 @@
version: '2.0'

services:
mongo:
image: 'mongo:3.4.4'
ports:
- '127.0.0.1:27017:27017'
volumes:
- 'mongo:/data/db'

browserquest:
tty: true
stdin_open: true
depends_on:
- mongo
build:
context: .
dockerfile: Dockerfile
command: node server.js -p 80 --mongoServer mongo --waitForDatabase 5000
ports:
- '80:80'
volumes:
- './assets:/usr/src/app/assets'
- './js:/usr/src/app/js'
- './server.js:/usr/src/app/server.js'
- './package.json:/usr/src/app/package.json'
- './index.html:/usr/src/app/index.html'
volumes:
mongo:
22 changes: 19 additions & 3 deletions server.js
Expand Up @@ -58,12 +58,28 @@ app.get('/',function(req,res){
var myArgs = require('optimist').argv;
var mongoHost, mongoDBName;

function sleep(milliseconds) {
console.log('Waiting for database - start: ' + new Date().getTime());
var start = new Date().getTime();
while (true) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
console.log('Waiting for database - finished: ' + (new Date().getTime() - start));
}

if(myArgs.waitForDatabase) {
sleep(myArgs.waitForDatabase);
}

if(myArgs.heroku){ // --heroku flag to behave according to Heroku's specs
mongoHost = 'heroku_4tv68zls:'+myArgs.pass+'@ds141368.mlab.com:41368';
mongoDBName = 'heroku_4tv68zls';
}else {
var mongoPort = (myArgs.mongoPort || 27017);
mongoHost = 'localhost:'+mongoPort;
var mongoServer = (myArgs.mongoServer || 'localhost');
mongoHost = mongoServer+':'+mongoPort;
mongoDBName = 'phaserQuest';
}

Expand All @@ -81,7 +97,7 @@ server.listen(myArgs.p || process.env.PORT || 8081,function(){ // -p flag to spe
});

io.on('connection',function(socket){
console.log('connection widht ID '+socket.id);
console.log('connection with ID '+socket.id);
console.log(server.getNbConnected()+' already connected');
socket.pings = [];

Expand Down Expand Up @@ -132,7 +148,7 @@ io.on('connection',function(socket){
});

socket.on('disconnect',function(){
console.log('Disconnection widht ID '+socket.id);
console.log('Disconnection with ID '+socket.id);
if(gs.getPlayer(socket.id)) gs.removePlayer(socket.id);
});
});
Expand Down

0 comments on commit 75b937d

Please sign in to comment.