From e0a8a2f013385c1dae50138a287f67ebf0ad8d6a Mon Sep 17 00:00:00 2001 From: Jeff Ma Date: Thu, 12 Jan 2023 14:49:26 -0500 Subject: [PATCH] Update repo for fly.io --- .dockerignore | 4 ++++ .gitignore | 2 +- Dockerfile | 31 +++++++++++++++++++++++++++++++ README.md | 6 ++---- app.js | 30 ++++++++++++++++++++++-------- package.json | 1 - 6 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..79297ed --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +Dockerfile +.dockerignore +node_modules +.git diff --git a/.gitignore b/.gitignore index c4039bb..02c54ee 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ pids node_modules # Env vars -.env +.env* # Redis database *.rdb diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bf67f71 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +# syntax=docker/dockerfile:1 + +# Using node 16 +FROM node:16-slim + +####################################################################### + +RUN mkdir /app +WORKDIR /app + +# NPM will not install any package listed in "devDependencies" when NODE_ENV is set to "production", +# to install all modules: "npm install --production=false". +# Ref: https://docs.npmjs.com/cli/v9/commands/npm-install#description + +ENV NODE_ENV production + +COPY . . +COPY .env.prod .env + +RUN npm install + +LABEL fly_launch_runtime="nodejs" + +# COPY --from=builder /root/.volta /root/.volta +# COPY --from=builder /app /app + +# WORKDIR /app +# ENV NODE_ENV production +# ENV PATH /root/.volta/bin:$PATH + +CMD [ "npm", "run", "start" ] diff --git a/README.md b/README.md index 752d45d..0221b2c 100644 --- a/README.md +++ b/README.md @@ -50,11 +50,9 @@ To stop the server, `Ctrl+C`, and then: - `npm run stop-redis` -## Deploy the app to heroku +## Deploy the app to fly.io -To deploy this to heroku, click this fancy button :) - -[](https://www.heroku.com/deploy/?template=https://github.com/Detry322/redisred) +Ensure .env prod files are present in root directory, then run `fly deploy` ## Environment variables. diff --git a/app.js b/app.js index 27ee0c9..c190af2 100644 --- a/app.js +++ b/app.js @@ -27,18 +27,31 @@ var redis = new Redis(redisUrl); //Initialize the app var app = express(); -var redisSessionStore = new RedisStore({client: redis}); +var redisSessionStore = new RedisStore({ client: redis }); app.set('views', './views'); app.set('view engine', 'jade'); app.use(favicon('./public/assets/favicon.png')); app.use(cookieParser()); -app.use(expressSession({ store: redisSessionStore, secret: sessionSecret, resave: true, saveUninitialized: true })); +app.use( + expressSession({ + store: redisSessionStore, + secret: sessionSecret, + resave: true, + saveUninitialized: true, + }), +); app.use(passport.initialize()); app.use(passport.session()); //Initialize controllers -var frontendController = require('./controllers/admin/FrontendController')(redis, passport); -var apiController = require('./controllers/admin/APIController')(redis, apiToken); +var frontendController = require('./controllers/admin/FrontendController')( + redis, + passport, +); +var apiController = require('./controllers/admin/APIController')( + redis, + apiToken, +); var redirectController = require('./controllers/RedirectController')(redis); //Initialize routes @@ -48,16 +61,17 @@ var list = require('./routes/list.js')(frontendController, apiController); app.use('/list', list); var main = require('./routes/main.js')(rootRedirect, redirectController); app.use('/', main); -app.use(function(req, res, next) { +app.use(function (req, res, next) { res.status(404).render('404'); }); // Start the server -console.log('Connecting to redis...'); -redis.ping(function(err){ +console.log(`Connecting to redis for admin ${adminUsername}...`); +redis.ping(function (err) { if (!err) { console.log('Connection successful. Server listening on port ' + port); app.listen(port); + } else { + console.error(`Redis connection failed: ${err}`); } }); - diff --git a/package.json b/package.json index 1388a2f..2063207 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "dotenv": "^1.2.0", "express": "^4.13.1", "express-session": "^1.11.3", - "hiredis": "^0.4.0", "ioredis": "^4.11.2", "jade": "^1.11.0", "morgan": "^1.6.1",