diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5171c54 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e2982c3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM node:8.11.1-alpine + +RUN mkdir -p /src/app + +WORKDIR /src/app + +COPY . /src/app + +RUN yarn install + +EXPOSE 3004 + +CMD [ "npm", "run", "docker" ] \ No newline at end of file diff --git a/client/dist/bundle.js b/client/dist/bundle.js deleted file mode 100644 index b3e5af7..0000000 --- a/client/dist/bundle.js +++ /dev/null @@ -1,86 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./client/src/index.jsx"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./client/src/index.jsx": -/*!******************************!*\ - !*** ./client/src/index.jsx ***! - \******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jbGllbnQvc3JjL2luZGV4LmpzeC5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./client/src/index.jsx\n"); - -/***/ }) - -/******/ }); \ No newline at end of file diff --git a/client/src/components/CurrentTeam.jsx b/client/src/components/CurrentTeam.jsx index b535f00..371d26b 100644 --- a/client/src/components/CurrentTeam.jsx +++ b/client/src/components/CurrentTeam.jsx @@ -1,9 +1,9 @@ import React from 'react'; import axios from 'axios'; -import '../../dist/styles.css' import ModuleBar from './ModuleBar.jsx'; import TeamTotal from './TeamTotal.jsx'; import TeamMember from './TeamMember.jsx'; +import '../../dist/styles.css'; class CurrentTeam extends React.Component { @@ -19,7 +19,7 @@ class CurrentTeam extends React.Component { } fetchTeam() { - axios.get(`http://localhost:3004/people/${this.props.org}`) + axios.get(`/people/${this.props.org}`) .then((team) => { this.setState({ people: team.data, diff --git a/db/index.js b/db/index.js index 29fd849..3e6117d 100644 --- a/db/index.js +++ b/db/index.js @@ -1,6 +1,6 @@ const mongoose = require('mongoose'); -const mongoUri = 'mongodb://localhost/crunchly'; +const mongoUri = 'mongodb://database/crunchly'; const db = mongoose.connect(mongoUri); diff --git a/db/seed.js b/db/seed.js index 7ad075d..d18d79f 100644 --- a/db/seed.js +++ b/db/seed.js @@ -1,22 +1,22 @@ const fs = require('fs'); const path = require('path'); - +const mongoose = require('mongoose'); const db = require('./index.js'); const Person = require('./Person.js'); // images are saved on s3 as files labeled 1-33 const generateRandomImage = function () { - const min = Math.ceil(1); - const max = Math.floor(33); + const min = 1; + const max = 33; return Math.floor(Math.random() * ((max - min) + 1)) + min; }; fs.readFile(path.join(__dirname, 'people.json'), (error, data) => { if (error) return console.error('Error reading file: ', error); - + const peopleData = []; const people = JSON.parse(data); - people.forEach((person) => { + people.slice(0,10000).forEach((person) => { person.member_id = parseInt(person.id); person.company = person.affiliation_name; person.thumbnail_url = `https://s3-us-west-1.amazonaws.com/crunchly-team/${generateRandomImage()}.jpg`; @@ -26,8 +26,17 @@ fs.readFile(path.join(__dirname, 'people.json'), (error, data) => { delete person.modified_at; const member = new Person.model(person); - member.save((error, member) => { - if (error) return console.error('Error saving to database: ', error); - }); + peopleData.push(member) + // member.save((error, member) => { + // if (error) return console.error('Error saving to database: ', error); + // console.log('saved :', member); + // }); }); + + Person.model.create(peopleData) + .then(() => { + console.log('database seed done'); + mongoose.disconnect(); + }); + }); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c59cb95 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' + +services: + server: + build: . + depends_on: + - 'database' + ports: + - '3004:3004' + + database: + image: mongo:latest diff --git a/package.json b/package.json index 5768b83..598259c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "start": "nodemon server/index.js", + "docker": "webpack -p && node db/seed.js & node server/index.js", "build": "webpack -d --watch", "db:setup": "node db/seed.js", "lint": "eslint . --ext .js, .jsx",