美文网首页
Mac 配置 Dataturks,非 docker

Mac 配置 Dataturks,非 docker

作者: 谢小帅 | 来源:发表于2019-10-21 12:55 被阅读0次

配置全过程主要根据:

1. 根据 Dockerfile 配置 mysql 数据库

Dockerfile 中设置 mysql 过程,跳过 COPY,专注 RUN

COPY $LOCAL_DOCKER_DIR/mysqlInit.sql $BASE_DIR/mysqlInit.sql
COPY $LOCAL_DOCKER_DIR/init.sh $BASE_DIR/init.sh
RUN chmod +x ./init.sh && \
    ./init.sh

根据 init.sh 创建 hope 数据库,用户为 dataturks/12345

#!/bin/bash
/usr/bin/mysqld_safe  &
sleep 5

mysql -u root -e "CREATE DATABASE hope"
mysql -u root -e "CREATE USER dataturks@'localhost' IDENTIFIED BY '12345';"
mysql -u root -e "GRANT SELECT, INSERT, UPDATE, DELETE ON hope.* TO dataturks@localhost;FLUSH PRIVILEGES;"

# exe sql to build tables
mysql -u root hope < /home/dataturks/mysqlInit.sql

执行完毕后,本机 hope 数据库下将出现以下表:

mysql> use hope;
Database changed
mysql> show tables;
+----------------------+
| Tables_in_hope       |
+----------------------+
| configs              |
| d_api_keys           |
| d_hits               |
| d_hits_result        |
| d_org_users          |
| d_orgs               |
| d_project_invites    |
| d_project_users      |
| d_projects           |
| d_subscription_plans |
| d_subscriptions      |
| d_users              |
| keyValues            |
+----------------------+
13 rows in set (0.00 sec)

查看已存的 demo 数据集信息

mysql> select id, name, taskType from d_projects;
+----------------------------------+-----------------------------------+-------------------------------+
| id                               | name                              | taskType                      |
+----------------------------------+-----------------------------------+-------------------------------+
| 2c9fafb062282fd801622ddbac320024 | Demo POS Tagging Project          | POS_TAGGING                   |
| 2c9fafb062282fd801622de773dc0027 | Demo Text Classification Project  | TEXT_CLASSIFICATION           |
| 2c9fafb062ca71c00162cdd45c8e0008 | Demo Document Annotations         | DOCUMENT_ANNOTATION           |
| 2c9fafb063a1ebf30163a7e3002b0035 | Demo Image Classification Project | IMAGE_CLASSIFICATION          |
| 2c9fafb0656f461b0165843201f200d2 | Demo Image Bounding Box Project   | IMAGE_POLYGON_BOUNDING_BOX_V2 |
| 2c9fafb0656f461b0165843c734c00d3 | Demo Image Polygon Bounding Box   | IMAGE_POLYGON_BOUNDING_BOX_V2 |
| 2c9fafb0656f461b016589a1ccdf0125 | Demo Video Classification         | IMAGE_CLASSIFICATION          |
+----------------------------------+-----------------------------------+-------------------------------+
7 rows in set (0.01 sec)

2. 根据 Dataturks 安装前后端依赖库

React 前端

brew install node@8
brew link node@8
npm install  # node@8 根据 package.json 安装依赖包,放在 node_modules 目录

Java-mysql 后端

mvn package -DskipTests  # 跳过 test,打 dataturks-1.0-SNAPSHOT.jar 包

关于 mvn

  • mvn clean:移除所有上一次构建生成的文件
  • mvn pacakge: 将 pom.xml 中所有 dependencies 和项目一同打成 jar 包
  • mvn 执行命令时,之前的命令都会顺序执行,除非加 skip 参数
mvn 生命周期

3. 本机 onprem 模式运行,修改一些 js 配置文件

3.1 前端

① 修改 DataTurks/bazaar/src/config.js,适应 onprem 模式

module.exports = Object.assign({
  host: process.env.HOST || 'localhost',
  port: process.env.PORT,
  apiHost: process.env.APIHOST || 'localhost',
  apiPort: process.env.APIPORT,
  // apiURL: process.env.BASE_URL || 'https://dataturks.com/dataturks/',
  apiURL: process.env.BASE_URL || 'http://localhost:9090/dataturks/',
  // servingEnv: process.env.NODE_DEST || 'online',
  servingEnv: process.env.NODE_DEST || 'onpremise',

npm run dev 会指定一些参数,定义在 pacakge.json

  • host: 未指定,使用 localhost
  • port: 3000,"start-dev", "start-dev-api" 指定
  • apiHost: 未指定,使用 localhost
  • apiPort: 3030,"start-dev-api" 指定
  • apiURL: 默认给定的是 online 模式的,修改为本地
  • servingEnv: 虽然 "watch-client" 有给出,但没什么用,修改

② 修改 DataTurks/bazaar/src/helpers/dthelper.js'online' -> 'onpremise'

// export,希望外界可以读取此变量
export const BASE_URL = (config.servingEnv === 'onpremise' ? config.apiURL : window.location.protocol + "//" + window.location.hostname + '/dataturks/');
console.log('servingEnv:', config.servingEnv);
console.log('BASE_URL:', BASE_URL); // 可在此输出 BASE_URL

③ npm run dev,等到 webpack built ... in xxxxx ms 就成功了,注意 💻 下面的两行与 ② 添加的两行 console.log 对应

[0] ==> 🚧  Webpack development server listening on port 3001
[1] servver bin  undefined
[2] Mon, 21 Oct 2019 04:33:13 GMT body-parser deprecated undefined extended: provide extended option at api/api.js:73:30
[2] ----
[2] ==> 🌎  API is running on port 3030
[2] ==> 💻  Send requests to http://localhost:3030
[1] servingEnv: onpremise
[1] BASE_URL: http://localhost:9090/dataturks/
[1] Rangy is not supported in this environment. Reason: Rangy can only run in a browser
[1] target url is  http://localhost:3030
[1] ----
[1] ==> ✅  AI + X 数据智能处理引擎 is running, talking to API server on 3030.
[1] ==> 💻  Open http://localhost:3000 in a browser to view the app.
···
···
[0] webpack built cccc3bdd9671f6610ffc in 54473ms

3.2 后台

① 命令行监控 logs 输出
注释 DataTurks/hope/onprem.yml 部分配置
方便 development 模式,production 模式保留 logs 更好

  • 32-36 行,./logs/root.log
  • 49-56 行,./logs/access.log

② Intellij IEDA 配置后台运行,logs 也会直接输出
注意 Main class 的 java 类是程序运行起点,有 main 函数

4. 生成 docker 镜像

① 复制 .dockerignore 到 Dataturks 根目录

# Ignore everything
**

# Allow files and directories
# 如果 ignore 重复,以后面匹配为准,以下路径开头保留
!Dockerfile
!.dockerignore
!./bazaar/**
!./hope/docker/**
!./hope/target/dataturks-1.0-SNAPSHOT.jar
!./hope/onprem.yml

# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
# 排除所有缓存和日志
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db
**/.idea
./bazaar/node_modules/**

② 执行 docker build

docker build -t vipa/vipaturks:1.0 -f hope/docker/Dockerfile .

生成日志

Sending build context to Docker daemon  107.9MB
Step 1/54 : FROM openjdk:8-jdk
 ---> 57c2c2d2643d
Step 2/54 : ENV DEBIAN_FRONTEND noninteractive
 ---> Running in 5f465ce7165c
Removing intermediate container 5f465ce7165c
···
···
Step 52/52 : CMD ./startup.sh > ./startup_log.log
 ---> Running in a8600e16b062
Removing intermediate container a8600e16b062
 ---> 4f75fba25e14
Successfully built 4f75fba25e14
Successfully tagged vipa/vipaturks:1.0

③ 测试打包好的 vipa/vipaturks:1.0

$ docker run --name=vipa_turks -d \
-p 80:80 \
-v /nfs/xs/retail/uploads:/home/dataturks/bazaar/uploads \
vipa/vipaturks:1.0
  • --name=vipa_turks:指定 container 名字,注意放置位置
  • -d:后台运行,Run container in background and print container ID
  • -p 80:80:本机 80 端口映射到 container 80,注意 mac apache 配置要先关闭监听 80,不然无法使用本机 80,也可使用其他端口
  • -v Source:Target:指定主机和容器路径映射,保护上传到容器的数据(默认情况下 Dataturks 上传数据到 uploads 目录,通过映射将数据保存到本地)可设置多个路径映射,根据 container_id 配置 config.v2.json, hostconfig.json
  • vipa/vipaturks:1.0:镜像名称 <用户名>/<软件名><TAG>

可查看本机运行镜像

$ docker ps -a    
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                         NAMES
34d3b511c8d3        vipa/vipaturks:1.0   "/bin/sh -c './start…"   19 seconds ago      Up 17 seconds       3000-3001/tcp, 0.0.0.0:80->80/tcp, 9090/tcp   vipa_turks

命令行访问 localhost 就可以用自己打包的镜像玩耍了 😛

④ push 到 docker hub

# 字段 2 定义 私有仓库镜像名称
$ docker tag vipa/vipaturks:1.0 shuaix/vipaturks:1.0
$ docker push shuaix/vipaturks:1.0

相关文章

网友评论

      本文标题:Mac 配置 Dataturks,非 docker

      本文链接:https://www.haomeiwen.com/subject/ndoamctx.html