From 9e9a3486d7f6c601d97b8c685f7c367eb4dbad50 Mon Sep 17 00:00:00 2001 From: Ken Jenney Date: Wed, 11 Mar 2020 23:47:45 -0400 Subject: [PATCH] Run this in Docker --- Dockerfile | 18 ++++++++++++++++++ bin/www | 7 +++++++ config/config.js | 25 +++++++++++++++++++++++++ config/config.json | 23 ----------------------- docker-compose.yml | 27 +++++++++++++++++++++++++++ models/index.js | 2 +- 6 files changed, 78 insertions(+), 24 deletions(-) create mode 100644 Dockerfile create mode 100644 config/config.js delete mode 100644 config/config.json create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f6d00f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM node:10-slim + +RUN apt-get update \ + && mkdir -p /usr/share/man/man1 \ + && mkdir -p /usr/share/man/man7 \ + && apt-get install -y --no-install-recommends postgresql-client libpq-dev \ + && rm -rf /var/lib/apt/lists/* \ + && apt-get clean + +WORKDIR /usr/src/app + +COPY package* ./ + +RUN npm install -g + +COPY . ./ + +CMD npm start diff --git a/bin/www b/bin/www index 8f0ea96..7706bf6 100755 --- a/bin/www +++ b/bin/www @@ -7,6 +7,13 @@ var app = require('../app'); var debug = require('debug')('node-sequelize:server'); var http = require('http'); +var models = require('../models'); + +/** + * Sync Database + */ + +models.sequelize.sync() /** * Get port from environment and store in Express. diff --git a/config/config.js b/config/config.js new file mode 100644 index 0000000..a9d944e --- /dev/null +++ b/config/config.js @@ -0,0 +1,25 @@ +const creds = { + development: { + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_NAME, + host: process.env.DB_HOSTNAME, + dialect: 'postgresql' + }, + test: { + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_NAME, + host: process.env.DB_HOSTNAME, + dialect: 'postgresql' + }, + production: { + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_NAME, + host: process.env.DB_HOSTNAME, + dialect: 'postgresql' + } +}; + +module.exports = creds; diff --git a/config/config.json b/config/config.json deleted file mode 100644 index f9f3ada..0000000 --- a/config/config.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "development": { - "username": "djamware", - "password": "dj@mw@r3", - "database": "node_sequelize", - "host": "127.0.0.1", - "dialect": "postgres" - }, - "test": { - "username": "root", - "password": "dj@mw@r3", - "database": "node_sequelize", - "host": "127.0.0.1", - "dialect": "postgres" - }, - "production": { - "username": "root", - "password": "dj@mw@r3", - "database": "node_sequelize", - "host": "127.0.0.1", - "dialect": "postgres" - } -} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c98ed4c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: '2.1' + +services: + api: + build: . + environment: + DB_USERNAME: postgres + DB_PASSWORD: test + DB_NAME: test + DB_HOSTNAME: db + ports: + - 3000:3000 + depends_on: + db: + condition: service_healthy + db: + image: postgres:10 + restart: always + environment: + POSTGRES_PASSWORD: test + POSTGRES_DB: test + ALLOW_IP_RANGE: 0.0.0.0/0 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 diff --git a/models/index.js b/models/index.js index 5662f10..f18b3c7 100644 --- a/models/index.js +++ b/models/index.js @@ -5,7 +5,7 @@ var path = require('path'); var Sequelize = require('sequelize'); var basename = path.basename(__filename); var env = process.env.NODE_ENV || 'development'; -var config = require(__dirname + '/../config/config.json')[env]; +var config = require(__dirname + '/../config/config.js')[env]; var db = {}; if (config.use_env_variable) {