docker: Add docker support for express and redis services

This commit is contained in:
Samuel Ortion 2022-08-29 08:21:53 +02:00
parent 0498ea8541
commit 232c69bdde
7 changed files with 55 additions and 12 deletions

4
.dockerignore Normal file
View File

@ -0,0 +1,4 @@
node_modules
.git
.gitignore
docker

10
app.js
View File

@ -7,13 +7,6 @@ const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const i18n = require('i18n-2');
const redis = require('redis');
const [redisHost, redisPort] = [process.env.REDIS_HOST, process.env.REDIS_PORT];
const redisClient = redis.createClient(redisPort, redisHost);
redisClient.on('error', (error) => {
console.error('Redis error:', error);
});
const indexRouter = require('./routes/index');
const apiRouter = require('./routes/api');
@ -34,7 +27,8 @@ app.use(express.static(path.join(__dirname, 'public')));
const sess = {
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
saveUninitialized: true,
cookie: { secure: false }
}
if (app.get('env') === 'production') {

View File

@ -1,12 +1,16 @@
require('dotenv').config();
const debug = require('debug')('soundbirder:cache');
const redis = require('redis');
[redisHost, redisPort] = [process.env.REDIS_HOST, process.env.REDIS_PORT];
const redisClient = redis.createClient(redisPort, redisHost);
const host = process.env.REDIS_HOST ? process.env.REDIS_HOST : 'localhost';
const port = process.env.REDIS_PORT ? process.env.REDIS_PORT : 6379;
const url = `redis://${host}:${port}`;
const redisClient = redis.createClient({
url
});
(async () => {
redisClient.connect();
})();
})();0
function cacheResponse(request, response) {
debug("Caching response", request);

View File

28
docker-compose.yml Normal file
View File

@ -0,0 +1,28 @@
version: '3.9'
services:
express:
container_name: soundbirder_express
build:
context: .
dockerfile: ./docker/express/Dockerfile
environment:
- NODE_ENV=production
- REDIS_HOST=${REDIS_HOST:-soundbirder_redis}
- REDIS_PORT=${REDIS_PORT:-6379}
ports:
- "${EXPRESS_PORT:-3000}:3000"
networks:
- soundbirder_network
depends_on:
- redis
redis:
container_name: soundbirder_redis
image: redis
networks:
- soundbirder_network
networks:
soundbirder_network:
driver: bridge

13
docker/express/Dockerfile Normal file
View File

@ -0,0 +1,13 @@
FROM node:16.17.0
WORKDIR /usr/src/app
COPY package*.json .
RUN npm install
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD [ "./bin/www" ]

View File

@ -2,7 +2,7 @@
"Game": "Jeu",
"About": "À propos",
"Contact": "Contact",
"SoundBirder is an open-source web application to learn bird song identification. It is based on bird records from Xeno-Canto and data from eBird": "SoundBirder est une application web open-source qui permet d'apprendre à reconnaitre les chants d'oiseaux. Elle se base sur les enregistrements audio de Xeno-Canto est sur les données de répartitions d'eBird",
"SoundBirder is an open-source web application to learn bird song identification. It is based on bird records from Xeno-Canto and data from eBird": "SoundBirder est une application web open-source qui permet d'apprendre à reconnaitre les chants d'oiseaux. Elle se base sur des enregistrements audios de Xeno-Canto et sur les données de répartitions d'eBird",
"Author": "Auteur",
"The project is made with ♥ by Samuel ORTION": "Ce projet est fait avec ♥ par Samuel ORTION"
}