From 2dffd2f74dd1ee7c80e699f222f6c28f943861e0 Mon Sep 17 00:00:00 2001 From: wancat Date: Fri, 21 Jul 2023 11:14:01 +0800 Subject: [PATCH] Add config.js, dockerfile --- Dockerfile | 19 +++++++++++++++++++ docker-compose.yml | 11 +++++++++++ server/src/config.js | 13 +++++++++++++ server/src/db.js | 3 ++- server/src/index.js | 6 +++--- 5 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 server/src/config.js diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a3a1f79 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM node + +WORKDIR /app +COPY package.json yarn.lock ./ +COPY server/package.json ./server/ +RUN yarn install --frozen-lockfile --production + +WORKDIR /app/server + +COPY server/src ./src +COPY server/quests ./quests +COPY server/swagger.yaml . + +ENV NODE_ENV=production +ENV HOST=0.0.0.0 +ENV PORT=3000 +EXPOSE 3000 + +CMD [ "yarn", "start" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f0c6eb9..8900c1a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,16 @@ version: '3' services: + app: + image: lancatlin/linux-odyssey-server + build: . + ports: + - '3000:3000' + links: + - db + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - MONGO_URL=mongodb://db:27017/odyssey-test db: image: mongo restart: always diff --git a/server/src/config.js b/server/src/config.js new file mode 100644 index 0000000..0aaef88 --- /dev/null +++ b/server/src/config.js @@ -0,0 +1,13 @@ +function get(key, defaultValue) { + const value = process.env[key] + if (value != null) { + return value + } + return defaultValue +} + +export default { + host: get('HOST', 'localhost'), + port: get('PORT', 3000), + db: get('MONGO_URL', 'mongodb://localhost:27017/odyssey-test'), +} diff --git a/server/src/db.js b/server/src/db.js index 6d37445..fb575c9 100644 --- a/server/src/db.js +++ b/server/src/db.js @@ -1,8 +1,9 @@ import mongoose from 'mongoose' +import config from './config.js' export default async function connectDB() { try { - await mongoose.connect('mongodb://localhost:27017/odyssey-test') + await mongoose.connect(config.db) console.log('Connected to MongoDB') } catch (err) { console.log(err) diff --git a/server/src/index.js b/server/src/index.js index 6cbf66d..80a424e 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -8,9 +8,9 @@ import socketServer from './api/socket.js' import connectDB from './db.js' import apiRouter from './api/routes/index.js' import loadAndUpdateQuests from './utils/quest.js' +import config from './config.js' async function main() { - const port = 3000 const app = express() const server = http.createServer(app) socketServer(server) @@ -28,8 +28,8 @@ async function main() { app.use('/api/v1', apiRouter) - server.listen(port, () => { - console.log(`Server listening at http://localhost:${port}`) + server.listen(config.port, config.host, () => { + console.log(`Server listening at http://${config.host}:${config.port}`) }) }