Skip to content

Commit

Permalink
feat: 使用 docker 部署
Browse files Browse the repository at this point in the history
  • Loading branch information
mengsixing committed Jun 13, 2019
1 parent 2f4fb35 commit 1b1b4ad
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 25 deletions.
18 changes: 18 additions & 0 deletions docker/Dockerfile
@@ -0,0 +1,18 @@
FROM node

LABEL maintainer = "yhlben <yinhengliben@gmail.com>"

RUN rm -rf /app
RUN mkdir /app

WORKDIR /app

COPY . /app

RUN npm install
RUN npm run build
RUN mv ./dist/* ./

EXPOSE 8082

CMD BUILD_ENV=docker node app.js
23 changes: 23 additions & 0 deletions docker/docker-compose.yml
@@ -0,0 +1,23 @@
version: '3.7'

services:
database:
image: mongo
restart: always
volumes:
- ~/data/db:/data/db
networks:
- webapp-network

web:
image: yhlben/cdfang-spider
depends_on:
- database
ports:
- 8082:8082
networks:
- webapp-network

networks:
webapp-network:
driver: bridge
16 changes: 5 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "cdfang-spider",
"version": "2.10.17",
"version": "2.11.17",
"description": "成都房协网爬虫,定时爬取最新房源,可视化数据分析。",
"main": "index.js",
"scripts": {
Expand Down
5 changes: 1 addition & 4 deletions src/client/config/index.ts
@@ -1,10 +1,7 @@
import ApolloClient from 'apollo-boost';

// 默认为当前域名
let serverDomain = '';
if (process.env.NODE_ENV === 'production') {
serverDomain = 'https://cdfangyuan.cn';
}
const serverDomain = '';

function getGraphqlClient(): ApolloClient<{}> {
return new ApolloClient({
Expand Down
9 changes: 8 additions & 1 deletion src/nodeuii/config/index.ts
@@ -1,4 +1,11 @@
const mongoDBHost =
process.env.BUILD_ENV === 'docker'
? 'mongodb://database/test'
: 'mongodb://localhost/test';

export default {
spiderDomain: 'http://zw.cdzj.chengdu.gov.cn',
serverPort: 8082
serverPort: 8082,
// 和 docker-compose 里的 mongo 容器相对应
databaseUrl: mongoDBHost
};
36 changes: 28 additions & 8 deletions src/nodeuii/utils/dbHelper.ts
@@ -1,23 +1,43 @@
/* eslint-disable no-console */
import mongoose from 'mongoose';
import config from '../config/index';

let connectTimeOut: NodeJS.Timeout;

const DbHelper = {
connectTimes: 8,
connect(): mongoose.Mongoose {
mongoose.connect('mongodb://localhost/test', {
useNewUrlParser: true,
// 弃用警告 https://mongoosejs.com/docs/deprecations.html#-findandmodify-
useFindAndModify: false
});
DbHelper.mongooseConnect();
const db = mongoose.connection;
db.on('error', console.error.bind(console, '连接mongodb失败。'));
db.once('open', () => {
console.warn('连接mongodb成功。');
db.once('error', () => {
console.error('连接 mongodb 失败。');
connectTimeOut = setInterval(() => {
if (DbHelper.connectTimes > 0) {
console.log(`正在重连 mongodb,剩余次数 ${DbHelper.connectTimes}。`);
DbHelper.connectTimes -= 1;
DbHelper.mongooseConnect();
} else {
console.log('重连 mongodb 失败。');
clearTimeout(connectTimeOut);
}
}, 8000);
});
db.on('open', () => {
console.log('连接 mongodb 成功。');
clearTimeout(connectTimeOut);
});
// 单例模式
DbHelper.connect = () => {
return mongoose;
};
return mongoose;
},
mongooseConnect(): void {
mongoose.connect(config.databaseUrl, {
useNewUrlParser: true,
// 弃用警告 https://mongoosejs.com/docs/deprecations.html#-findandmodify-
useFindAndModify: false
});
}
};

Expand Down

0 comments on commit 1b1b4ad

Please sign in to comment.