feat: update docker

test
bigfengyu 5 years ago
commit 17eb191d31

@ -1,5 +1,23 @@
FROM node:8.11.1-alpine
# BUILDING
FROM node:lts-alpine AS builder
LABEL maintainer="llitfkitfk@gmail.com"
RUN yarn global add typescript
WORKDIR /app
# cache dependencies
COPY package.json ./
RUN yarn install
# build
COPY . ./
RUN yarn run build
# RUNNING
FROM node:lts-alpine
LABEL maintainer="llitfkitfk@gmail.com"
WORKDIR /app
ADD . /tmp
RUN /bin/sh -c 'cd /tmp && npm install && npm install -g typescript && npm run build && mv ./dist/* /app/ && mv ./node_modules /app/ && rm -rf /tmp'
COPY --from=builder /app/dist .
COPY --from=builder /app/node_modules ./node_modules

@ -1,34 +1,56 @@
# RAP2-DELOS 开源社区版本 (后端API服务器)
# RAP2-DELOS 开源社区版本 (后端 API 服务器)
[![Build Status](https://travis-ci.org/thx/rap2-delos.svg?branch=master)](https://travis-ci.org/thx/rap2-delos)
RAP2 包含两个组件(对应两个Github Repository)。
RAP2 是在 RAP1 基础上重做的新项目,它包含两个组件(对应两个 Github Repository)。
* rap2-delos: 后端数据API服务器基于Koa + MySQL[link](http://github.com/thx/rap2-delos)
* rap2-dolores: 前端静态资源,基于React [link](http://github.com/thx/rap2-dolores)
- rap2-delos: 后端数据 API 服务器,基于 Koa + MySQL[link](http://github.com/thx/rap2-delos)
- rap2-dolores: 前端静态资源,基于 React [link](http://github.com/thx/rap2-dolores)
***2019-09-27更新的用户请注意按照下面指引安装 pandoc 以启用文档导出功能***
### Resources
* [Official Site 官网: rap2.taobao.org](http://rap2.taobao.org)
* 钉钉群ID: 11789704
* [热心网友提供的部署文档,供参考](https://github.com/thx/rap2-delos/issues/119)
- [Official Site 官网: rap2.taobao.org](http://rap2.taobao.org)
- 钉钉群 ID: 11789704
- [热心网友提供的部署文档,供参考](https://github.com/thx/rap2-delos/issues/119)
## 快速部署(Docker)
```sh
# 1. 安装docker
# 2. 修改docker-compose.xml中的配置。默认使用mysql和redis的镜像。可修改为自己的配置
# 3. 下载源码并执行。
docker-compose up -d
# ⚠️注意: 第一次运行需要手动初始化mysql数据库。分别执行以下命令
docker-compose exec delos node scripts/init
# 部署成功后 访问
http://localhost:38081 # 前端
http://localhost:38080 # 后端
# 如果仍然有问题,重新启动
docker-compose down
# 重新运行
docker-compose up -d
```
## 部署
### 环境要求
* Node.js 8.9.4+
* MySQL 5.7+
* Redis 4.0+
* pandoc 2.73 (供文档生成使用)
- Node.js 8.9.4+
- MySQL 5.7+
- Redis 4.0+
- pandoc 2.73 (供文档生成使用)
### 开发模式
#### 安装MySQL和Redis服务器
#### 安装 MySQL Redis 服务器
请自行查找搭建方法mysql/redis配置在config.*.ts文件中在不修改任何配置的情况下
redis会通过默认端口 + 本机即可正常访问确保redis-server打开即可。
请自行查找搭建方法mysql/redis 配置在 config.\*.ts 文件中,在不修改任何配置的情况下,
redis 会通过默认端口 + 本机即可正常访问,确保 redis-server 打开即可。
注意:修改 cofig 文件后需要重新 `npm run build` 才能生效
@ -46,7 +68,7 @@ redis会通过默认端口 + 本机即可正常访问确保redis-server打开
redis-server
```
后台执行可以使用nohup或pm2这里推荐使用pm2下面命令会安装pm2并通过pm2来启动redis缓存服务
后台执行可以使用 nohup pm2这里推荐使用 pm2下面命令会安装 pm2并通过 pm2 来启动 redis 缓存服务
```bash
npm install -g pm2
@ -65,9 +87,9 @@ mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLL
npm install
```
confirm configurations in /config/config.dev.js (used in development mode),确认/config/config.dev.js中的配置(.dev.js后缀表示用于开发模式)。
confirm configurations in /config/config.dev.js (used in development mode),确认/config/config.dev.js 中的配置(.dev.js 后缀表示用于开发模式)。
#### 安装 && TypeScript编译
#### 安装 && TypeScript 编译
```bash
npm install -g typescript
@ -80,12 +102,14 @@ npm run build
npm run create-db
```
#### 执行mocha测试用例和js代码规范检查
#### 执行 mocha 测试用例和 js 代码规范检查
```bash
npm run check
```
#### 启动开发模式的服务器 监视并在发生代码变更时自动重启
```bash
npm run dev
```
@ -99,44 +123,26 @@ npm start
```
## Dockerfile (本地源码通过docker运行
```sh
# 1. 安装docker
# 2. 修改docker-compose.xml中的配置。默认使用mysql和redis的镜像。可修改为自己的配置
# 3. 通过源码运行。
docker-compose up -d
# 4. 第一次运行需要手动初始化mysql数据库。分别执行以下命令
docker exec -it rap2-delos sh
// 登录成功以后执行:
node scripts/init
// 执行完毕后退出
exit
// 如果仍然有问题,重新启动
docker-compose down
// 重新运行
docker-compose up -d
```
## Author
* 版权: 阿里妈妈前端团队
* 作者:
* RAP2 2017/10前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。
* 2017/10之后版本开发者
* [霍雍(Bosn)](https://github.com/bosn/)[RAP1](https://github.com/thx/RAP)作者RAP最早的创始人。
* [承虎(alvarto)](https://github.com/alvarto/)
* [池冰(bigfengyu)](https://github.com/bigfengyu)
- 版权: 阿里妈妈前端团队
- 作者:
- RAP2 2017/10 前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。
- 2017/10 之后版本开发者
- [霍雍(Bosn)](http://github.com/bosn/)[RAP1](http://github.com/thx/RAP)作者RAP 最早的创始人。
- [承虎(alvarto)](http://github.com/alvarto/)
- [池冰(bigfengyu)](https://github.com/bigfengyu)
### Tech Arch
* 前端架构(rap2-dolores)
* React / Redux / Saga / Router
* Mock.js
* SASS / Bootstrap 4 beta
* server: nginx
* 后端架构(rap2-delos)
* Koa
* Sequelize
* MySQL
* Server
* server: node
- 前端架构(rap2-dolores)
- React / Redux / Saga / Router
- Mock.js
- SASS / Bootstrap 4 beta
- server: nginx
- 后端架构(rap2-delos)
- Koa
- Sequelize
- MySQL
- Server
- server: node

@ -1,54 +1,59 @@
# mail@dongguochao.com
# llitfkitfk@gmail.com
version: '2.2'
version: "3"
services:
# frontend
nginx:
# image: nginx:stable-alpine
build:
# will use image from the frontend repo in the future
context: docker/frontend
volumes:
- ./docker/nginx/conf.d:/etc/nginx/conf.d
ports:
- 38080:38080
- 38081:38081
# backend
delos:
container_name: rap2-delos
# build from ./Dockerfile
# build: .
build: .
# build from images
image: blackdog1987/rap2-delos:2.6.aa3be03
# you can find last tag from https://hub.docker.com/r/blackdog1987/rap2-delos
# image: blackdog1987/rap2-delos:2.6.aa3be03
environment:
# if you have your own mysql, config it here, and disable the 'mysql' config blow
- MYSQL_URL=rap2-mysql # links will maintain /etc/hosts, just use 'container_name'
- MYSQL_URL=mysql # links will maintain /etc/hosts, just use 'container_name'
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWD=
- MYSQL_SCHEMA=rap2
# redis config
- REDIS_URL=rap2-redis
- REDIS_URL=redis
- REDIS_PORT=6379
# production / development
- NODE_ENV=production
working_dir: /app
privileged: true
###### 'sleep 30 && node scripts/init' will drop the tables
###### RUN ONLY ONCE THEN REMOVE 'sleep 30 && node scripts/init'
command: /bin/sh -c 'sleep 30; node scripts/init; node dispatch.js'
command: /bin/sh -c 'node dispatch.js'
# init the databases
# command: sleep 30 && node scripts/init && node dispatch.js
# command: sleep 30 && node scripts/init && node dispatch.js
# without init
# command: node dispatch.js
links:
- redis
- mysql
# command: node dispatch.js
depends_on:
- redis
- mysql
ports:
- "38080:8080" # expose 38080
redis:
container_name: rap2-redis
image: redis:4.0.9
image: redis:4
# disable this if you have your own mysql
mysql:
container_name: rap2-mysql
image: mysql:5.7.22
image: mysql:5.7
# expose 33306 to client (navicat)
#ports:
# - 33306:3306

@ -0,0 +1,17 @@
# BUILDING
FROM node:lts-alpine AS builder
LABEL maintainer="llitfkitfk@gmail.com"
WORKDIR /app
RUN apk add --no-cache git
RUN git clone --depth 1 https://github.com/thx/rap2-dolores.git ./
RUN yarn install
COPY config/config.prod.ts ./src/config/config.prod.ts
RUN yarn run lint
RUN yarn run build
# nginx
FROM nginx:stable-alpine
COPY --from=builder /app/build /app

@ -0,0 +1,9 @@
const config: IConfig = {
serve: 'http://localhost:38080',
keys: ['some secret hurr'],
session: {
key: 'koa:sess',
},
}
export default config

@ -0,0 +1,17 @@
server {
listen 38080;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://delos:8080/;
}
}

@ -0,0 +1,12 @@
server {
listen 38081;
server_name localhost;
root /app;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
try_files $uri /index.html;
}
}
Loading…
Cancel
Save