From c1f1ada9345166f5939a6e5c606cc6e1bb118fb7 Mon Sep 17 00:00:00 2001 From: Jackk Goh Date: Thu, 15 Mar 2018 16:11:38 +0800 Subject: [PATCH] init --- .gitignore | 1 + app.js | 16 ++++++++++++++++ bin/www | 9 +++++++++ docker-compose.yml | 22 ++++++++++++++++++++++ package.json | 27 +++++++++++++++++++++++++++ server/config/config.json | 25 +++++++++++++++++++++++++ server/routes/index.js | 5 +++++ setup.bat | 5 +++++ setup.sh | 5 +++++ 9 files changed, 115 insertions(+) create mode 100644 .gitignore create mode 100644 app.js create mode 100644 bin/www create mode 100644 docker-compose.yml create mode 100644 package.json create mode 100644 server/config/config.json create mode 100644 server/routes/index.js create mode 100644 setup.bat create mode 100755 setup.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..b3fe4c6 --- /dev/null +++ b/app.js @@ -0,0 +1,16 @@ +const express = require('express'); +const logger = require('morgan'); +const bodyParser = require('body-parser'); + +const app = express(); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); + +// Require our routes into the application. +require('./server/routes')(app); +app.get('*', (req, res) => res.status(200).send({ + message: 'Welcome to the beginning of nothingness.', +})); + +module.exports = app; \ No newline at end of file diff --git a/bin/www b/bin/www new file mode 100644 index 0000000..1563623 --- /dev/null +++ b/bin/www @@ -0,0 +1,9 @@ +// This will be our application entry. We'll setup our server here. +const http = require('http'); +const app = require('../app'); // The express app we just created + +const port = parseInt(process.env.PORT, 10) || 8000; +app.set('port', port); + +const server = http.createServer(app); +server.listen(port); \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fe7353a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +server: + image: node:7 + command: npm run start:dev + working_dir: /app + volumes: + - .:/app + environment: + PORT: 3000 + CONNECTION_STRING_DEV: postgres://user:password@db/db + ports: + - "3000:3000" + - "5858:5858" + links: + - db +db: + image: postgres + expose: + - 5432 + environment: + POSTGRES_PASSWORD: password + POSTGRES_USER: user + POSTGRES_DB: db \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..ac3c8fd --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "node-totorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start:dev": "nodemon ./bin/www", + "test": "echo \"Error: no test specified\" && exit 1", + "db:migrate": "./node_modules/.bin/sequelize db:migrate", + "db:seed": "db:seed:all" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.2", + "express": "^4.16.3", + "morgan": "^1.9.0", + "pg": "^7.4.1", + "pg-hstore": "^2.3.2", + "sequelize": "^4.37.0" + }, + "devDependencies": { + "nodemon": "^1.17.2", + "sequelize-cli": "^2.4.0" + } +} diff --git a/server/config/config.json b/server/config/config.json new file mode 100644 index 0000000..0254d47 --- /dev/null +++ b/server/config/config.json @@ -0,0 +1,25 @@ +{ + "development": { + "username": "user", + "password": "password", + "database": "db", + "host": "db", + "port": 5432, + "dialect": "postgres" + }, + "test": { + "username": "root", + "password": null, + "database": "database_test", + "host": "127.0.0.1", + "port": 5432, + "dialect": "postgres" + }, + "production": { + "username": "root", + "password": null, + "database": "database_production", + "host": "127.0.0.1", + "dialect": "mysql" + } +} diff --git a/server/routes/index.js b/server/routes/index.js new file mode 100644 index 0000000..5a72beb --- /dev/null +++ b/server/routes/index.js @@ -0,0 +1,5 @@ +module.exports = (app) => { + app.get('/api', (req, res) => res.status(200).send({ + message: 'Welcome to the Todos API!', + })); +}; \ No newline at end of file diff --git a/setup.bat b/setup.bat new file mode 100644 index 0000000..92a7458 --- /dev/null +++ b/setup.bat @@ -0,0 +1,5 @@ +docker exec -it $(docker ps | grep server | awk '{ print $1 }') /bin/sh -c 'npm run db:migrate' +docker exec -it $(docker ps | grep server | awk '{ print $1 }') /bin/sh -c 'npm run db:seed' +docker kill $(docker ps | grep server | awk '{ print $1 }') +docker kill $(docker ps | grep db | awk '{ print $1 }') +docker-compose up \ No newline at end of file diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..92a7458 --- /dev/null +++ b/setup.sh @@ -0,0 +1,5 @@ +docker exec -it $(docker ps | grep server | awk '{ print $1 }') /bin/sh -c 'npm run db:migrate' +docker exec -it $(docker ps | grep server | awk '{ print $1 }') /bin/sh -c 'npm run db:seed' +docker kill $(docker ps | grep server | awk '{ print $1 }') +docker kill $(docker ps | grep db | awk '{ print $1 }') +docker-compose up \ No newline at end of file