From 01d5cbfdbf6b0bf2d1276472ff744e9880fe38c8 Mon Sep 17 00:00:00 2001 From: longxiaofei Date: Fri, 25 Aug 2023 15:55:31 +0800 Subject: [PATCH] chore: update docker-compose.yml --- .dockerignore | 55 +++++++++++++++++++ client.dockerfile | 20 ++++--- docker-compose.yml | 21 ++++++- docker/nginx.conf | 23 ++++++++ packages/rath-client/package.json | 1 + .../rath-client/src/pages/causal/predict.ts | 2 +- .../pages/dataConnection/database/main.tsx | 2 +- services/prediction/Dockerfile | 9 +++ services/prediction/requirements.txt | 6 ++ 9 files changed, 127 insertions(+), 12 deletions(-) create mode 100644 .dockerignore create mode 100644 docker/nginx.conf create mode 100644 services/prediction/Dockerfile create mode 100644 services/prediction/requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..77bd7eda9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,55 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +/server/dataset/ + +.vscode + +safety +dist + +coverage + +.cache +.eslintcache + +*.cert +*.key +*.pem + +packages/frontend/public/datasets/* + +*service.json +*.db + +for_test/ +sasl-0.3.1-cp310-cp310-win_amd64.whl +__pycache__/ +.idea/ +connect.db +not_sqlalchemy/ +run_flask_app.bat +venv + +dataset-with-metas.json \ No newline at end of file diff --git a/client.dockerfile b/client.dockerfile index 76e5a238d..798a133a3 100644 --- a/client.dockerfile +++ b/client.dockerfile @@ -1,12 +1,16 @@ -FROM node:16 as build-stage +FROM node:16 AS build-stage + COPY . /app + WORKDIR /app -ENV NODE_OPTIONS=--max_old_space_size=4096 -RUN npm config set registry https://registry.npmmirror.com -RUN yarn config set registry https://registry.npmmirror.com + RUN yarn install -RUN yarn workspace rath-client build2 -FROM nginx:latest -COPY --from=build-stage /app/packages/rath-client/build /usr/share/nginx/html -CMD ["nginx", "-g", "daemon off;"] +RUN yarn workspace rath-client buildOnDocker + +FROM nginx:1.24 + +COPY --from=node-builder /app/packages/rath-client/build /usr/share/nginx/html +COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf + +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/docker-compose.yml b/docker-compose.yml index 751c4d540..4f75e0e7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,24 @@ +version: "2" + services: - frontend: + base: + restart: always build: context: . dockerfile: client.dockerfile ports: - - 8080:80 \ No newline at end of file + - 9083:80 + + connector-api: + restart: always + network_mode: service:base + build: + context: ./services/connector + dockerfile: Dockerfile + + prediction-api: + restart: always + network_mode: service:base + build: + context: ./services/prediction + dockerfile: Dockerfile diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 000000000..0b29f2e5c --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,23 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + location /connector/api { + proxy_pass http://localhost:5001/api; + } + + location /api/train_test { + proxy_pass http://localhost:5533/api/train_test; + } + +} \ No newline at end of file diff --git a/packages/rath-client/package.json b/packages/rath-client/package.json index e52c48d3b..8d74b0816 100644 --- a/packages/rath-client/package.json +++ b/packages/rath-client/package.json @@ -80,6 +80,7 @@ "build:renderer": "yarn workspace vega-painter-renderer build", "start": "react-app-rewired start", "build": "npm run build:utils && npm run build:scenegraph && npm run build:renderer && npm run build:client", + "buildOnDocker": "npm run build:utils && npm run build:scenegraph && npm run build:renderer && GENERATE_SOURCEMAP=false react-app-rewired --max_old_space_size=4096 build", "build:client": "GENERATE_SOURCEMAP=false react-app-rewired --max_old_space_size=8000 build", "buildForAnalysis": "react-app-rewired build", "test": "jest -c ./jest.config.js --passWithNoTests --no-cache", diff --git a/packages/rath-client/src/pages/causal/predict.ts b/packages/rath-client/src/pages/causal/predict.ts index c99405563..9f9a3f800 100644 --- a/packages/rath-client/src/pages/causal/predict.ts +++ b/packages/rath-client/src/pages/causal/predict.ts @@ -51,7 +51,7 @@ export interface IPredictResult { const PREDICT_API_KEY = 'prediction_service'; function getPredictAPIPath (path = "/api/train_test") { const baseURL = new URL(window.location.href); - const serviceURL = new URL(baseURL.searchParams.get(PREDICT_API_KEY) || localStorage.getItem(PREDICT_API_KEY) || "http://127.0.0.1:5533/api/train_test"); + const serviceURL = new URL(baseURL.searchParams.get(PREDICT_API_KEY) || localStorage.getItem(PREDICT_API_KEY) || window.location.href); serviceURL.pathname = path; return serviceURL.toString(); } diff --git a/packages/rath-client/src/pages/dataConnection/database/main.tsx b/packages/rath-client/src/pages/dataConnection/database/main.tsx index 7dc17bcca..6d811abd6 100644 --- a/packages/rath-client/src/pages/dataConnection/database/main.tsx +++ b/packages/rath-client/src/pages/dataConnection/database/main.tsx @@ -68,8 +68,8 @@ interface DatabaseDataProps { export const inputWidth = '180px'; export const defaultServers: readonly string[] = [ + "/connector", 'https://gateway.kanaries.net/connector', - 'https://kanaries.cn/connector', ]; const MAX_SERVER_COUNT = 5; diff --git a/services/prediction/Dockerfile b/services/prediction/Dockerfile new file mode 100644 index 000000000..f5750cade --- /dev/null +++ b/services/prediction/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.10.7 + +WORKDIR /prediction + +COPY . /prediction + +RUN pip3 install --trusted-host pypi.python.org -r requirements.txt + +CMD python3 -u /prediction/main.py diff --git a/services/prediction/requirements.txt b/services/prediction/requirements.txt new file mode 100644 index 000000000..a9dc81b60 --- /dev/null +++ b/services/prediction/requirements.txt @@ -0,0 +1,6 @@ +Flask +Flask_cors +gevent +scikit-learn==1.3.0 +xgboost==1.7.6 +pandas==2.0.3