Alan Colon vor 7 Jahren
Ursprung
Commit
4697dc2fc5
7 geänderte Dateien mit 70 neuen und 5 gelöschten Zeilen
  1. 3 0
      .dockerignore
  2. 14 0
      Dockerfile
  3. 3 0
      config.js
  4. 26 0
      lib/app.js
  5. 8 0
      lib/server.js
  6. 7 3
      package.json
  7. 9 2
      yarn.lock

+ 3 - 0
.dockerignore

@@ -0,0 +1,3 @@
+.git/
+dist/
+node_modules/

+ 14 - 0
Dockerfile

@@ -0,0 +1,14 @@
+FROM node
+
+RUN npm install -g yarn
+
+EXPOSE 80
+
+ENV NODE_PORT=80 NODE_ENV=production
+WORKDIR /app/
+ADD . /app/
+RUN NODE_ENV=development yarn && \
+    yarn build && \
+    yarn
+
+CMD yarn server

+ 3 - 0
config.js

@@ -0,0 +1,3 @@
+module.exports = {
+  port: process.env.NODE_PORT
+}

+ 26 - 0
lib/app.js

@@ -0,0 +1,26 @@
+const http = require('http')
+const express = require('express')
+const expressLogging = require('express-logging')
+const config = require('../config')
+
+const app = module.exports = express()
+
+app.use(expressLogging(console))
+app.use(express.static('dist'))
+
+app.listen = (port = config.port || (app.settings.env === 'production' ? 80 : 3000)) => new Promise((resolve, reject) => {
+  app.server = http.createServer(app)
+  app.server.once('error', (err) => {
+    if (err.message.includes('EADDRINUSE') && app.settings.env === 'development' && port < 3999) {
+      console.warn(err.message)
+      resolve(app.listen(port + 1))
+    } else {
+      reject(err)
+    }
+  })
+  app.server.listen(port, () => {
+    console.log(`Listening on http://localhost:${app.server.address().port}`)
+  })
+})
+
+module.exports = app

+ 8 - 0
lib/server.js

@@ -0,0 +1,8 @@
+const app = require('./app')
+
+/* TODO: Add handlers */
+
+app.listen().catch((err) => {
+  console.log(err.toString())
+  process.exit(1)
+})

+ 7 - 3
package.json

@@ -6,11 +6,11 @@
   "scripts": {
     "build": "webpack",
     "build:dev": "webpack --watch",
-    "server": "http-server dist",
-    "server:dev": "webpack-dev-server",
+    "server": "node lib/server.js",
+    "server:dev": "nodemon --watch lib lib/server.js",
     "test": "mocha",
     "test:dev": "mocha --watch",
-    "dev": "npm-run-all -p server:dev test:dev"
+    "dev": "npm-run-all -p build:dev server:dev test:dev"
   },
   "author": "",
   "license": "ISC",
@@ -29,5 +29,9 @@
     "webpack-cli": "^3.1.2",
     "webpack-dev-server": "^3.1.14",
     "webpack-livereload-plugin": "^2.2.0"
+  },
+  "dependencies": {
+    "express": "^4.16.4",
+    "express-logging": "^1.1.1"
   }
 }

+ 9 - 2
yarn.lock

@@ -1531,7 +1531,14 @@ expand-brackets@^2.1.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
-express@^4.16.2:
+express-logging@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/express-logging/-/express-logging-1.1.1.tgz#62839618cbab5bb3610f1a1c1485352fe9d26c2a"
+  integrity sha1-YoOWGMurW7NhDxocFIU1L+nSbCo=
+  dependencies:
+    on-headers "^1.0.0"
+
+express@^4.16.2, express@^4.16.4:
   version "4.16.4"
   resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
   integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
@@ -3174,7 +3181,7 @@ on-finished@~2.3.0:
   dependencies:
     ee-first "1.1.1"
 
-on-headers@~1.0.1:
+on-headers@^1.0.0, on-headers@~1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
   integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=