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 WORKDIR /app
ADD . /tmp COPY --from=builder /app/dist .
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/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) [![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-delos: 后端数据 API 服务器,基于 Koa + MySQL[link](http://github.com/thx/rap2-delos)
* rap2-dolores: 前端静态资源,基于React [link](http://github.com/thx/rap2-dolores) - rap2-dolores: 前端静态资源,基于 React [link](http://github.com/thx/rap2-dolores)
***2019-09-27更新的用户请注意按照下面指引安装 pandoc 以启用文档导出功能*** ***2019-09-27更新的用户请注意按照下面指引安装 pandoc 以启用文档导出功能***
### Resources ### Resources
* [Official Site 官网: rap2.taobao.org](http://rap2.taobao.org) - [Official Site 官网: rap2.taobao.org](http://rap2.taobao.org)
* 钉钉群ID: 11789704 - 钉钉群 ID: 11789704
* [热心网友提供的部署文档,供参考](https://github.com/thx/rap2-delos/issues/119) - [热心网友提供的部署文档,供参考](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+ - Node.js 8.9.4+
* Redis 4.0+ - MySQL 5.7+
* pandoc 2.73 (供文档生成使用) - Redis 4.0+
- pandoc 2.73 (供文档生成使用)
### 开发模式 ### 开发模式
#### 安装MySQL和Redis服务器 #### 安装 MySQL Redis 服务器
请自行查找搭建方法mysql/redis配置在config.*.ts文件中在不修改任何配置的情况下 请自行查找搭建方法mysql/redis 配置在 config.\*.ts 文件中,在不修改任何配置的情况下,
redis会通过默认端口 + 本机即可正常访问确保redis-server打开即可。 redis 会通过默认端口 + 本机即可正常访问,确保 redis-server 打开即可。
注意:修改 cofig 文件后需要重新 `npm run build` 才能生效 注意:修改 cofig 文件后需要重新 `npm run build` 才能生效
@ -46,7 +68,7 @@ redis会通过默认端口 + 本机即可正常访问确保redis-server打开
redis-server redis-server
``` ```
后台执行可以使用nohup或pm2这里推荐使用pm2下面命令会安装pm2并通过pm2来启动redis缓存服务 后台执行可以使用 nohup pm2这里推荐使用 pm2下面命令会安装 pm2并通过 pm2 来启动 redis 缓存服务
```bash ```bash
npm install -g pm2 npm install -g pm2
@ -65,9 +87,9 @@ mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLL
npm install 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 ```bash
npm install -g typescript npm install -g typescript
@ -80,12 +102,14 @@ npm run build
npm run create-db npm run create-db
``` ```
#### 执行mocha测试用例和js代码规范检查 #### 执行 mocha 测试用例和 js 代码规范检查
```bash ```bash
npm run check npm run check
``` ```
#### 启动开发模式的服务器 监视并在发生代码变更时自动重启 #### 启动开发模式的服务器 监视并在发生代码变更时自动重启
```bash ```bash
npm run dev 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 ## Author
* 版权: 阿里妈妈前端团队
* 作者: - 版权: 阿里妈妈前端团队
* RAP2 2017/10前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。 - 作者:
* 2017/10之后版本开发者 - RAP2 2017/10 前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。
* [霍雍(Bosn)](https://github.com/bosn/)[RAP1](https://github.com/thx/RAP)作者RAP最早的创始人。 - 2017/10 之后版本开发者
* [承虎(alvarto)](https://github.com/alvarto/) - [霍雍(Bosn)](http://github.com/bosn/)[RAP1](http://github.com/thx/RAP)作者RAP 最早的创始人。
* [池冰(bigfengyu)](https://github.com/bigfengyu) - [承虎(alvarto)](http://github.com/alvarto/)
- [池冰(bigfengyu)](https://github.com/bigfengyu)
### Tech Arch ### Tech Arch
* 前端架构(rap2-dolores) - 前端架构(rap2-dolores)
* React / Redux / Saga / Router - React / Redux / Saga / Router
* Mock.js - Mock.js
* SASS / Bootstrap 4 beta - SASS / Bootstrap 4 beta
* server: nginx - server: nginx
* 后端架构(rap2-delos) - 后端架构(rap2-delos)
* Koa - Koa
* Sequelize - Sequelize
* MySQL - MySQL
* Server - Server
* server: node - server: node

@ -1,54 +1,59 @@
# mail@dongguochao.com # mail@dongguochao.com
# llitfkitfk@gmail.com
version: '2.2' version: "3"
services: 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: delos:
container_name: rap2-delos
# build from ./Dockerfile # build from ./Dockerfile
# build: . build: .
# build from images # 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: environment:
# if you have your own mysql, config it here, and disable the 'mysql' config blow # 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_PORT=3306
- MYSQL_USERNAME=root - MYSQL_USERNAME=root
- MYSQL_PASSWD= - MYSQL_PASSWD=
- MYSQL_SCHEMA=rap2 - MYSQL_SCHEMA=rap2
# redis config # redis config
- REDIS_URL=rap2-redis - REDIS_URL=redis
- REDIS_PORT=6379 - REDIS_PORT=6379
# production / development # production / development
- NODE_ENV=production - NODE_ENV=production
working_dir: /app
privileged: true
###### 'sleep 30 && node scripts/init' will drop the tables ###### 'sleep 30 && node scripts/init' will drop the tables
###### RUN ONLY ONCE THEN REMOVE 'sleep 30 && node scripts/init' ###### 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 # init the databases
# command: sleep 30 && node scripts/init && node dispatch.js # command: sleep 30 && node scripts/init && node dispatch.js
# without init # without init
# command: node dispatch.js # command: node dispatch.js
links:
- redis
- mysql
depends_on: depends_on:
- redis - redis
- mysql - mysql
ports:
- "38080:8080" # expose 38080
redis: redis:
container_name: rap2-redis image: redis:4
image: redis:4.0.9
# disable this if you have your own mysql # disable this if you have your own mysql
mysql: mysql:
container_name: rap2-mysql image: mysql:5.7
image: mysql:5.7.22
# expose 33306 to client (navicat) # expose 33306 to client (navicat)
#ports: #ports:
# - 33306:3306 # - 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