From 9c10eee2fa1bf742d1b937ac74232b85df9f856f Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Mon, 6 Sep 2021 21:03:13 +0800 Subject: [PATCH 01/18] feat: add dockerfile --- .dockerignore | 11 +++++++++++ Dockerfile | 15 +++++++++++++++ package.json | 1 + sql/Dockerfile | 3 +++ sql/doraemon.sql | 2 ++ 5 files changed, 32 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 sql/Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ad6dffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +.vscode +# node_modules/ +# config/manifest.json +run +logs +cache +.history +# public +resources +# app/view +# .yarnrc \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d868041 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:15.12.0 + +RUN mkdir -p /app/doraemon + +COPY . /app/doraemon + +WORKDIR /app/doraemon + +# RUN ["yarn"] + +# RUN ["yarn", "build"] + +CMD ["yarn", "server:docker"] + +EXPOSE 7002 \ No newline at end of file diff --git a/package.json b/package.json index 58554fe..e9b21ec 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "start:test": "bash start.sh -t", "server": "egg-scripts start --daemon", "server:test": "egg-scripts start --port=7002 --env=test --daemon", + "server:docker": "egg-scripts start", "dingBot": "node DingBot.js", "stop": "egg-scripts stop", "lint": "eslint .", diff --git a/sql/Dockerfile b/sql/Dockerfile new file mode 100644 index 0000000..172a896 --- /dev/null +++ b/sql/Dockerfile @@ -0,0 +1,3 @@ +FROM mysql/mysql-server:latest + +COPY doraemon.sql /app/doraemon/ diff --git a/sql/doraemon.sql b/sql/doraemon.sql index 8800f1a..356954b 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -13,6 +13,8 @@ Date: 01/06/2021 15:45:35 */ +CREATE DATABASE IF NOT EXISTS `doraemon_test`; +USE doraemon_test; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; From 4b2c18ef414f61e754896ec68565d937f7bb2558 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Thu, 21 Oct 2021 15:23:37 +0800 Subject: [PATCH 02/18] feat: shell --- Dockerfile | 6 +----- env.json | 6 +++++- scripts/const.sh | 11 ++++++++++ scripts/docker_start.sh | 45 +++++++++++++++++++++++++++++++++++++++++ scripts/make.sh | 2 ++ scripts/make_mysql.sh | 3 +++ scripts/make_web.sh | 3 +++ 7 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 scripts/const.sh create mode 100644 scripts/docker_start.sh create mode 100644 scripts/make.sh create mode 100644 scripts/make_mysql.sh create mode 100644 scripts/make_web.sh diff --git a/Dockerfile b/Dockerfile index d868041..abffa74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:15.12.0 +FROM node:slim RUN mkdir -p /app/doraemon @@ -6,10 +6,6 @@ COPY . /app/doraemon WORKDIR /app/doraemon -# RUN ["yarn"] - -# RUN ["yarn", "build"] - CMD ["yarn", "server:docker"] EXPOSE 7002 \ No newline at end of file diff --git a/env.json b/env.json index 77d4bcc..ee903f5 100644 --- a/env.json +++ b/env.json @@ -3,6 +3,10 @@ "msgSingleUrl": "https://dtstack.github.io/doraemon/docsify/#/", "helpDocUrl": "https://dtstack.github.io/doraemon/docsify/#/", "mysql": { - "prod": {} + "prod": { + "database": "doraemon_test", + "host": "doraemon_mysql", + "password": "123456" + } } } \ No newline at end of file diff --git a/scripts/const.sh b/scripts/const.sh new file mode 100644 index 0000000..f752f46 --- /dev/null +++ b/scripts/const.sh @@ -0,0 +1,11 @@ +export image_mysql=/doraemon_mysql + +export image_web=/doraemon_web + +export version=0.0.1 + +export mysql_pwd=123456 + +export mysql_path=/app/doraemon/doraemon.sql + +export v_path=/Users/yuwan/desktop/doraemon_data1 diff --git a/scripts/docker_start.sh b/scripts/docker_start.sh new file mode 100644 index 0000000..ca15db7 --- /dev/null +++ b/scripts/docker_start.sh @@ -0,0 +1,45 @@ +source ./const.sh + +# 导入 sql 文件 +soucreSql() { + containerId=$(docker ps -a | grep $image_mysql | awk '{print $1}') + docker exec -i $containerId mysql -uroot -p$mysql_pwd < Date: Thu, 9 Jun 2022 14:49:56 +0800 Subject: [PATCH 03/18] feat: some change --- Dockerfile | 19 ++++++++++++++++++- app/controller/common.js | 5 +++-- package.json | 3 ++- scripts/docker_start.sh | 17 +++++++++++++++-- sql/doraemon.sql | 4 ++-- 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index abffa74..b96a66a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,24 @@ -FROM node:slim +FROM node:14.17.4-slim RUN mkdir -p /app/doraemon +RUN set -x && \ + echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list && \ + echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list && \ + apt-get update && apt-get install -y --no-install-recommends \ + inetutils-ping \ + iproute2 \ + vim \ + ssh \ + curl \ + netcat-openbsd \ + libltdl7 \ + telnet \ + net-tools \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + COPY . /app/doraemon WORKDIR /app/doraemon diff --git a/app/controller/common.js b/app/controller/common.js index 4f8ff6b..182044e 100644 --- a/app/controller/common.js +++ b/app/controller/common.js @@ -12,11 +12,12 @@ class CommonController extends Controller { } async getLocalIp() { const { app, ctx } = this; - const localIp = ctx.header['x-real-ip']||ctx.ip; + const localIp = ctx.header['x-real-ip'] || ctx.ip; ctx.body = app.utils.response(true, { localIp, host: ctx.host, - protocol: ctx.protocol + protocol: ctx.protocol, + ips: ctx.ips }); } } diff --git a/package.json b/package.json index 130810c..12d89bc 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,11 @@ "debug": "egg-bin debug", "dev": "egg-bin dev --daemon", "start": "bash start.sh", + "start-docker": "cd ./scripts && sh ./docker_start.sh", "start:test": "bash start.sh -t", "server": "egg-scripts start --daemon", "server:test": "egg-scripts start --port=7002 --env=test --daemon", - "server:docker": "egg-scripts start", + "server:docker": "egg-scripts start --port=7002", "dingBot": "node DingBot.js", "stop": "egg-scripts stop", "lint": "eslint .", diff --git a/scripts/docker_start.sh b/scripts/docker_start.sh index ca15db7..43d5ce9 100644 --- a/scripts/docker_start.sh +++ b/scripts/docker_start.sh @@ -32,10 +32,23 @@ reRunContainer() { # 启动 if [[ $imageName =~ $image_web ]]; then - docker run -d --link doraemon_mysql:doraemon_mysql -p 7001:7001 $imageName + # docker run -d \ + # -p 7002:7002 \ + # --network alpine-net \ + # $imageName + + docker run --rm -d --net=host $imageName else mkdir -p $v_path - docker run -d --name="doraemon_mysql" -v $v_path:/var/lib/mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=$mysql_pwd -p 3302:3306 $imageName + docker run -d \ + --name="doraemon_mysql" \ + -v $v_path:/var/lib/mysql \ + -e MYSQL_ROOT_HOST=% \ + -e MYSQL_ROOT_PASSWORD=$mysql_pwd \ + -p 3302:3306 \ + $imageName + + sleep 11 soucreSql fi diff --git a/sql/doraemon.sql b/sql/doraemon.sql index c9a1109..8ae5c13 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -13,8 +13,8 @@ Date: 01/06/2021 15:45:35 */ -CREATE DATABASE IF NOT EXISTS `doraemon`; -USE doraemon; +CREATE DATABASE IF NOT EXISTS `doraemon_test`; +USE doraemon_test; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; From 0f8ab12477d7182431b43799fcc0c03eb53c087f Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Mon, 26 Dec 2022 17:04:49 +0800 Subject: [PATCH 04/18] feat: config change --- env.json | 5 +++-- package.json | 5 +++-- scripts/const.sh | 6 +++--- scripts/docker_start.sh | 31 +++++++++++++++---------------- scripts/make_mysql.sh | 8 ++++++-- scripts/make_web.sh | 8 ++++++-- sql/doraemon.sql | 24 ++++++++++++------------ 7 files changed, 48 insertions(+), 39 deletions(-) diff --git a/env.json b/env.json index 4ebb89a..daec7b5 100644 --- a/env.json +++ b/env.json @@ -7,8 +7,9 @@ "proxyHelpDocUrl": "https://dtstack.github.io/doraemon/docsify/#/zh-cn/guide/%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1", "mysql": { "prod": { - "database": "doraemon_test", - "host": "doraemon_mysql", + "database": "doraemon", + "host": "0.0.0.0", + "port": "3302", "password": "123456" } } diff --git a/package.json b/package.json index 42f8614..23d7437 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,12 @@ "helpDoc": "docsify serve ./docs/docsify", "clean": "easy clean", "build": "easy build", + "build:docker": "easy build && cd ./scripts && sh ./make.sh", "debug": "egg-bin debug", "dev": "egg-bin dev --daemon", "start": "bash start.sh", - "start-docker": "cd ./scripts && sh ./docker_start.sh", "start:test": "bash start.sh -t", + "start:docker": "cd ./scripts && sh ./docker_start.sh mysql && sh ./docker_start web", "server": "egg-scripts start --daemon", "server:test": "egg-scripts start --port=7002 --env=test --daemon", "server:docker": "egg-scripts start --port=7002", @@ -145,4 +146,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} +} \ No newline at end of file diff --git a/scripts/const.sh b/scripts/const.sh index f752f46..347f638 100644 --- a/scripts/const.sh +++ b/scripts/const.sh @@ -1,8 +1,8 @@ -export image_mysql=/doraemon_mysql +export image_mysql=172.16.84.121/dtstack-dev/doraemon_mysql -export image_web=/doraemon_web +export image_web=172.16.84.121/dtstack-dev/doraemon_web -export version=0.0.1 +export version=0.0.2 export mysql_pwd=123456 diff --git a/scripts/docker_start.sh b/scripts/docker_start.sh index 43d5ce9..3a395e0 100644 --- a/scripts/docker_start.sh +++ b/scripts/docker_start.sh @@ -32,27 +32,26 @@ reRunContainer() { # 启动 if [[ $imageName =~ $image_web ]]; then - # docker run -d \ - # -p 7002:7002 \ - # --network alpine-net \ - # $imageName - docker run --rm -d --net=host $imageName else mkdir -p $v_path docker run -d \ - --name="doraemon_mysql" \ - -v $v_path:/var/lib/mysql \ - -e MYSQL_ROOT_HOST=% \ - -e MYSQL_ROOT_PASSWORD=$mysql_pwd \ - -p 3302:3306 \ - $imageName - - + --name="doraemon_mysql" \ + -v $v_path:/var/lib/mysql \ + -e MYSQL_ROOT_HOST=% \ + -e MYSQL_ROOT_PASSWORD=$mysql_pwd \ + -p 3302:3306 \ + $imageName + sleep 11 - soucreSql + if [[ $2 == '-f' ]]; then + soucreSql + fi fi } -# reRunContainer $image_mysql -reRunContainer $image_web +if [[ $1 == 'web' ]]; then + reRunContainer $image_web +elif [[ $1 == 'mysql' ]]; then + reRunContainer $image_mysql $2 +fi diff --git a/scripts/make_mysql.sh b/scripts/make_mysql.sh index 6ce55be..a632208 100644 --- a/scripts/make_mysql.sh +++ b/scripts/make_mysql.sh @@ -1,3 +1,7 @@ -docker build -t 172.16.8.120:5443/dtstack-dev/doraemon_mysql:0.0.1 ../sql +source ./const.sh -docker push 172.16.8.120:5443/dtstack-dev/doraemon_mysql:0.0.1 \ No newline at end of file +imageName=$image_mysql:$version + +docker build -t $imageName ../sql + +docker push $imageName \ No newline at end of file diff --git a/scripts/make_web.sh b/scripts/make_web.sh index 785f531..7b470ab 100644 --- a/scripts/make_web.sh +++ b/scripts/make_web.sh @@ -1,3 +1,7 @@ -docker build -t 172.16.8.120:5443/dtstack-dev/doraemon_web:0.0.1 ../ +source ./const.sh -docker push 172.16.8.120:5443/dtstack-dev/doraemon_web:0.0.1 \ No newline at end of file +imageName=$image_mysql:$version + +docker build -t $imageName ../ + +docker push $imageName diff --git a/sql/doraemon.sql b/sql/doraemon.sql index 8ae5c13..96d772d 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -13,8 +13,8 @@ Date: 01/06/2021 15:45:35 */ -CREATE DATABASE IF NOT EXISTS `doraemon_test`; -USE doraemon_test; +CREATE DATABASE IF NOT EXISTS `doraemon`; +USE doraemon; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; @@ -36,7 +36,7 @@ CREATE TABLE `app_centers` ( `status` int DEFAULT '1', `clickCount` int DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('Remote Hosts', NULL, 0, NULL, '袋鼠云内部团队host集中管理系统', '/page/switch-hosts-list', NOW(), NOW(), 1, 0); INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('文章订阅', NULL, 0, NULL, '定时推送技术网站排行榜到钉钉群,每天都能学到新知识', '/page/article-subscription-list', NOW(), NOW(), 1, 0); @@ -100,7 +100,7 @@ CREATE TABLE `config_management` ( `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `findHostId` (`host_id`) -) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for config_notice_url @@ -114,7 +114,7 @@ CREATE TABLE `config_notice_url` ( `webHook` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `is_delete` int NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for config_tag_rel @@ -128,7 +128,7 @@ CREATE TABLE `config_tag_rel` ( `update_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除,1删除,0未删除', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Table structure for host_management @@ -146,7 +146,7 @@ CREATE TABLE `host_management` ( `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `tag_ids` varchar(10000) COLLATE utf8_bin NOT NULL DEFAULT '1', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for proxy_rule @@ -164,7 +164,7 @@ CREATE TABLE `proxy_rule` ( `status` int NOT NULL DEFAULT '1', `mode` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1389 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for proxy_server @@ -181,7 +181,7 @@ CREATE TABLE `proxy_server` ( `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=96 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for proxy_server_addrs @@ -196,7 +196,7 @@ CREATE TABLE `proxy_server_addrs` ( `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for switch_hosts @@ -215,7 +215,7 @@ CREATE TABLE `switch_hosts` ( `is_close` tinyint NOT NULL DEFAULT '0' COMMENT '是否关闭 1关闭', `is_delete` tinyint NOT NULL DEFAULT '0' COMMENT '是否删除 1删除', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -- ---------------------------- -- Table structure for tag_management @@ -232,6 +232,6 @@ CREATE TABLE `tag_management` ( `is_close` int DEFAULT '0', `is_admin` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; SET FOREIGN_KEY_CHECKS = 1; From 444c8b1a7af81a07fb040a248ccb7e86d010c52d Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 11:15:03 +0800 Subject: [PATCH 05/18] fix: some config change, fix bugs, insert tag sql --- Dockerfile | 32 ++++++++++++++++---------------- scripts/docker_start.sh | 4 ++-- scripts/make_web.sh | 2 +- sql/doraemon.sql | 3 +++ 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index b96a66a..c3674fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,22 +2,22 @@ FROM node:14.17.4-slim RUN mkdir -p /app/doraemon -RUN set -x && \ - echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list && \ - echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list && \ - apt-get update && apt-get install -y --no-install-recommends \ - inetutils-ping \ - iproute2 \ - vim \ - ssh \ - curl \ - netcat-openbsd \ - libltdl7 \ - telnet \ - net-tools \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* +# RUN set -x && \ +# echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list && \ +# echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list && \ +# apt-get update && apt-get install -y --no-install-recommends \ +# inetutils-ping \ +# iproute2 \ +# vim \ +# ssh \ +# curl \ +# netcat-openbsd \ +# libltdl7 \ +# telnet \ +# net-tools \ +# && \ +# apt-get clean && \ +# rm -rf /var/lib/apt/lists/* COPY . /app/doraemon diff --git a/scripts/docker_start.sh b/scripts/docker_start.sh index 3a395e0..aaf61a5 100644 --- a/scripts/docker_start.sh +++ b/scripts/docker_start.sh @@ -34,7 +34,6 @@ reRunContainer() { if [[ $imageName =~ $image_web ]]; then docker run --rm -d --net=host $imageName else - mkdir -p $v_path docker run -d \ --name="doraemon_mysql" \ -v $v_path:/var/lib/mysql \ @@ -44,7 +43,8 @@ reRunContainer() { $imageName sleep 11 - if [[ $2 == '-f' ]]; then + if [[ $2 == '-volume' ]]; then + mkdir -p $v_path soucreSql fi fi diff --git a/scripts/make_web.sh b/scripts/make_web.sh index 7b470ab..2daa0d6 100644 --- a/scripts/make_web.sh +++ b/scripts/make_web.sh @@ -1,6 +1,6 @@ source ./const.sh -imageName=$image_mysql:$version +imageName=$image_web:$version docker build -t $imageName ../ diff --git a/sql/doraemon.sql b/sql/doraemon.sql index 96d772d..7a9db9b 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -234,4 +234,7 @@ CREATE TABLE `tag_management` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +INSERT INTO doraemon.tag_management (tagName,tagDesc,tagColor,created_at,updated_at,is_delete,is_close,is_admin) VALUES ('前端','前端标签','#3fa7ff','2020-11-28 02:17:23','2020-12-31 08:16:16',0,0,1); +INSERT INTO doraemon.tag_management (tagName,tagDesc,tagColor,created_at,updated_at,is_delete,is_close,is_admin) VALUES ('后端','后端标签','#5c84ff','2020-11-28 03:06:48','2020-12-31 08:16:29',0,0,1); + SET FOREIGN_KEY_CHECKS = 1; From c066b6d58058af0b4879ce136e1a71ea34e1cc74 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 11:39:55 +0800 Subject: [PATCH 06/18] chore: adjust directory structure --- dockerScripts/build.sh | 4 ++++ {scripts => dockerScripts}/const.sh | 0 {scripts => dockerScripts}/docker_start.sh | 0 {scripts => dockerScripts}/make.sh | 0 {scripts => dockerScripts}/make_mysql.sh | 0 {scripts => dockerScripts}/make_web.sh | 0 dockerScripts/start.sh | 3 +++ package.json | 4 ++-- 8 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 dockerScripts/build.sh rename {scripts => dockerScripts}/const.sh (100%) rename {scripts => dockerScripts}/docker_start.sh (100%) rename {scripts => dockerScripts}/make.sh (100%) rename {scripts => dockerScripts}/make_mysql.sh (100%) rename {scripts => dockerScripts}/make_web.sh (100%) create mode 100644 dockerScripts/start.sh diff --git a/dockerScripts/build.sh b/dockerScripts/build.sh new file mode 100644 index 0000000..4d17bcf --- /dev/null +++ b/dockerScripts/build.sh @@ -0,0 +1,4 @@ +yarn +yarn build +cd ./dockerScripts +sh ./make.sh \ No newline at end of file diff --git a/scripts/const.sh b/dockerScripts/const.sh similarity index 100% rename from scripts/const.sh rename to dockerScripts/const.sh diff --git a/scripts/docker_start.sh b/dockerScripts/docker_start.sh similarity index 100% rename from scripts/docker_start.sh rename to dockerScripts/docker_start.sh diff --git a/scripts/make.sh b/dockerScripts/make.sh similarity index 100% rename from scripts/make.sh rename to dockerScripts/make.sh diff --git a/scripts/make_mysql.sh b/dockerScripts/make_mysql.sh similarity index 100% rename from scripts/make_mysql.sh rename to dockerScripts/make_mysql.sh diff --git a/scripts/make_web.sh b/dockerScripts/make_web.sh similarity index 100% rename from scripts/make_web.sh rename to dockerScripts/make_web.sh diff --git a/dockerScripts/start.sh b/dockerScripts/start.sh new file mode 100644 index 0000000..f9fc9a6 --- /dev/null +++ b/dockerScripts/start.sh @@ -0,0 +1,3 @@ +cd ./dockerScripts +sh ./docker_start.sh mysql $1 +sh ./docker_start web \ No newline at end of file diff --git a/package.json b/package.json index 23d7437..98d24ff 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,12 @@ "helpDoc": "docsify serve ./docs/docsify", "clean": "easy clean", "build": "easy build", - "build:docker": "easy build && cd ./scripts && sh ./make.sh", + "build:docker": "sh ./dockerScripts/build.sh", "debug": "egg-bin debug", "dev": "egg-bin dev --daemon", "start": "bash start.sh", "start:test": "bash start.sh -t", - "start:docker": "cd ./scripts && sh ./docker_start.sh mysql && sh ./docker_start web", + "start:docker": "sh ./dockerScripts/start.sh", "server": "egg-scripts start --daemon", "server:test": "egg-scripts start --port=7002 --env=test --daemon", "server:docker": "egg-scripts start --port=7002", From e92e1b852643a5b0e0ccab5ff4f76de24ae5a1b9 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 14:34:21 +0800 Subject: [PATCH 07/18] fix: specify bash execution --- dockerScripts/build.sh | 1 + dockerScripts/const.sh | 3 ++- dockerScripts/docker_start.sh | 1 + dockerScripts/make.sh | 1 + dockerScripts/make_mysql.sh | 1 + dockerScripts/make_web.sh | 1 + dockerScripts/start.sh | 1 + 7 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dockerScripts/build.sh b/dockerScripts/build.sh index 4d17bcf..fdfa894 100644 --- a/dockerScripts/build.sh +++ b/dockerScripts/build.sh @@ -1,3 +1,4 @@ +#!/bin/bash yarn yarn build cd ./dockerScripts diff --git a/dockerScripts/const.sh b/dockerScripts/const.sh index 347f638..c34b563 100644 --- a/dockerScripts/const.sh +++ b/dockerScripts/const.sh @@ -1,3 +1,4 @@ +#!/bin/bash export image_mysql=172.16.84.121/dtstack-dev/doraemon_mysql export image_web=172.16.84.121/dtstack-dev/doraemon_web @@ -8,4 +9,4 @@ export mysql_pwd=123456 export mysql_path=/app/doraemon/doraemon.sql -export v_path=/Users/yuwan/desktop/doraemon_data1 +export v_path=/home/app/doraemon_docker/data diff --git a/dockerScripts/docker_start.sh b/dockerScripts/docker_start.sh index aaf61a5..bd151cb 100644 --- a/dockerScripts/docker_start.sh +++ b/dockerScripts/docker_start.sh @@ -1,3 +1,4 @@ +#!/bin/bash source ./const.sh # 导入 sql 文件 diff --git a/dockerScripts/make.sh b/dockerScripts/make.sh index 2901381..dcb7468 100644 --- a/dockerScripts/make.sh +++ b/dockerScripts/make.sh @@ -1,2 +1,3 @@ +#!/bin/bash sh make_mysql.sh sh make_web.sh \ No newline at end of file diff --git a/dockerScripts/make_mysql.sh b/dockerScripts/make_mysql.sh index a632208..e7a4884 100644 --- a/dockerScripts/make_mysql.sh +++ b/dockerScripts/make_mysql.sh @@ -1,3 +1,4 @@ +#!/bin/bash source ./const.sh imageName=$image_mysql:$version diff --git a/dockerScripts/make_web.sh b/dockerScripts/make_web.sh index 2daa0d6..9dc7861 100644 --- a/dockerScripts/make_web.sh +++ b/dockerScripts/make_web.sh @@ -1,3 +1,4 @@ +#!/bin/bash source ./const.sh imageName=$image_web:$version diff --git a/dockerScripts/start.sh b/dockerScripts/start.sh index f9fc9a6..0a90dbc 100644 --- a/dockerScripts/start.sh +++ b/dockerScripts/start.sh @@ -1,3 +1,4 @@ +#!/bin/bash cd ./dockerScripts sh ./docker_start.sh mysql $1 sh ./docker_start web \ No newline at end of file From 50e19fbb38672fe4e188b1440e47f894afee4b9f Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 15:28:17 +0800 Subject: [PATCH 08/18] fix: fix shell bug, delete self info --- dockerScripts/start.sh | 2 +- sql/doraemon.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dockerScripts/start.sh b/dockerScripts/start.sh index 0a90dbc..1e47b68 100644 --- a/dockerScripts/start.sh +++ b/dockerScripts/start.sh @@ -1,4 +1,4 @@ #!/bin/bash cd ./dockerScripts sh ./docker_start.sh mysql $1 -sh ./docker_start web \ No newline at end of file +sh ./docker_start.sh web \ No newline at end of file diff --git a/sql/doraemon.sql b/sql/doraemon.sql index 7a9db9b..eb326ca 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -38,7 +38,7 @@ CREATE TABLE `app_centers` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('Remote Hosts', NULL, 0, NULL, '袋鼠云内部团队host集中管理系统', '/page/switch-hosts-list', NOW(), NOW(), 1, 0); +INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('Remote Hosts', NULL, 0, NULL, 'host集中管理系统', '/page/switch-hosts-list', NOW(), NOW(), 1, 0); INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('文章订阅', NULL, 0, NULL, '定时推送技术网站排行榜到钉钉群,每天都能学到新知识', '/page/article-subscription-list', NOW(), NOW(), 1, 0); -- ---------------------------- From 0457b9b202bf85737d74189d1f5cedc47c2dc88a Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 17:43:21 +0800 Subject: [PATCH 09/18] docs: docke deploy doc --- README-zh_CN.md | 58 +++++++- README.md | 60 ++++++++- docs/docsify/_sidebar.md | 1 + docs/docsify/zh-cn/_sidebar.md | 1 + .../start/Docker\351\203\250\347\275\262.md" | 125 ++++++++++++++++++ 5 files changed, 236 insertions(+), 9 deletions(-) create mode 100644 "docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" diff --git a/README-zh_CN.md b/README-zh_CN.md index 9ebf0d5..a91eb8f 100644 --- a/README-zh_CN.md +++ b/README-zh_CN.md @@ -1,4 +1,4 @@ -# 哆啦 A 梦 (Doraemon) Here, you can find everything you need +# 哆啦 A 梦 (Doraemon) Here, you can find everything you need [English](./README.md) | 简体中文 @@ -14,7 +14,7 @@ ## 环境支持 -- node >= 8.0.0 +- node >= 16.0.0 ## 快速开始 @@ -29,6 +29,7 @@ cd doraemon ``` #### 安装依赖 + 我们推荐使用 yarn 进行依赖安装。 ```bash @@ -54,15 +55,64 @@ yarn dev #### 发布模式启动应用 ```bash -yarn start +yarn start yarn start:test // 测试环境发布 ``` +## 使用 Docker 部署(仅支持 Linux) + +#### 构建镜像(如果镜像已在 Docker Hub 中,可跳过此步) + +1. 修改根目录的 `env.json` 文件中的 `mysql` 配置,该配置项需要和 `./dockerScripts/docker_start.sh` 中 mysql 镜像的启动命令配置保持一致,默认配置如下 + ```json + "mysql": { + "prod": { + "database": "doraemon", + "host": "0.0.0.0", + "port": "3302", + "password": "******" + } + } + ``` +2. 进到 `dockerScripts` 文件夹下,在 `const.sh` 配置镜像信息(`image_mysql`, `image_web`, `version` 等) + +3. 执行 build 命令 + + ```bash + $ yarn build:docker + ``` + +4. 待构建完成并推到仓库后,登入部署服务器,拉取镜像并启动容器 + +#### 启动镜像 + +1. 登入部署服务器,进到 `dockerScripts` 文件夹下,修改 `const.sh` 文件中 `v_path` (数据卷的存储路径) + +2. 启动容器 + 回到根目录下,执行启动命令,拉取最新镜像,并启动 + + ```bash + $ yarn start:docker + ``` + + 如果是第一次启动,尚未初始化库表结构,请执行 `-volume` 命令(历史数据需手动迁移) + + ```bash + $ yarn start:docker -volume + ``` + +3. 上述操作会删除原有容器和镜像,拉取最新镜像,如果只是重启停止的容器,仅需要 start 即可 + + ```bash + $ docker start + ``` + +访问: http://127.0.0.1:7002 ## 使用指南 -查看完整的 Doraemon 功能使用指南,请访问 [在线文档](https://dtstack.github.io/doraemon/docsify/#/) +查看完整的 Doraemon 功能使用指南,请访问 [在线文档](https://dtstack.github.io/doraemon/docsify/#/) ## 如何贡献 diff --git a/README.md b/README.md index 46e584e..4943b02 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# 哆啦 A 梦 (Doraemon) Here, you can find everything you need +# 哆啦 A 梦 (Doraemon) Here, you can find everything you need -English | [简体中文](./README-zh_CN.md) +English | [简体中文](./README-zh_CN.md) A management tool to help you organize your daily development, configuration, proxy services, host resources, etc. @@ -20,7 +20,6 @@ A management tool to help you organize your daily development, configuration, pr ### Install - ```bash git clone git@github.com:DTStack/doraemon.git @@ -28,6 +27,7 @@ cd doraemon ``` #### Installation dependencies + We recommend using yarn for dependency installation. ```bash @@ -53,11 +53,61 @@ visit: http://127.0.0.1:7001 #### Publish mode to start ```bash -yarn start +yarn start yarn start:test // test environment publishing ``` +## Deploy with Docker(Only support Linux) + +#### Images build(If the image is already in the Docker Hub, skip this step) + +1. Modify the `mysql` configuration in the root `env.json` file. This configuration item needs to be consistent with the startup command configuration of the mysql image in `./dockerScripts/docker_start.sh` + ```json + "mysql": { + "prod": { + "database": "doraemon", + "host": "0.0.0.0", + "port": "3302", + "password": "******" + } + } + ``` +2. `cd ./dockerScripts`, configure the image information in the `const.sh`(such as `image_mysql`, `image_web`, `version` and so on) + +3. image build + + ```bash + $ yarn build:docker + ``` + +4. After the build is complete and pushed to the repository, log in to the deployment server, pull the image and start the container + +#### Container run + +1. Log in to the deployment server, `cd ./dockerScripts`, change `v_path`(the path to the data volume) in the `const.sh` file + +2. container run + Return to the root directory and run the startup command, pull the latest image and run + + ```bash + $ yarn start:docker + ``` + + If this is the first startup and the library table structure has not been initialized, run the `-volume` command (historical data needs to be manually migrated) + + ```bash + $ yarn start:docker -volume + ``` + +3. The preceding operations will delete the original container and image, and pull the latest image. If you want to restart the stopped container, you only need to start + + ```bash + $ docker start + ``` + +visit: http://127.0.0.1:7002 + ## Documentation Visit [Doraemon Docs](https://dtstack.github.io/doraemon/docsify/#/) for the full Doraemon documentation. @@ -72,4 +122,4 @@ Detailed changes for each release are documented in the [ChangeLog.md](./CHANGEL ## License -[MIT](LICENSE) \ No newline at end of file +[MIT](LICENSE) diff --git a/docs/docsify/_sidebar.md b/docs/docsify/_sidebar.md index bcd0512..163c603 100644 --- a/docs/docsify/_sidebar.md +++ b/docs/docsify/_sidebar.md @@ -2,6 +2,7 @@ + [快速开始](zh-cn/start/快速开始) + [开发者使用](zh-cn/start/开发者使用) ++ [Docker 部署](zh-cn/start/Docker部署) * 配置 + [配置项](zh-cn/configuration/envConfig) + [MySQL](zh-cn/configuration/mysql) diff --git a/docs/docsify/zh-cn/_sidebar.md b/docs/docsify/zh-cn/_sidebar.md index bcd0512..163c603 100644 --- a/docs/docsify/zh-cn/_sidebar.md +++ b/docs/docsify/zh-cn/_sidebar.md @@ -2,6 +2,7 @@ + [快速开始](zh-cn/start/快速开始) + [开发者使用](zh-cn/start/开发者使用) ++ [Docker 部署](zh-cn/start/Docker部署) * 配置 + [配置项](zh-cn/configuration/envConfig) + [MySQL](zh-cn/configuration/mysql) diff --git "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" new file mode 100644 index 0000000..fff6b78 --- /dev/null +++ "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" @@ -0,0 +1,125 @@ +# 使用 Docker 部署(仅支持 Linux) + +## 构建镜像(如果镜像已在 Docker Hub 中,可跳过此步) + +1. 修改根目录的 `env.json` 文件中的 `mysql` 配置,该配置项需要和 `./dockerScripts/docker_start.sh` 中 mysql 镜像的启动命令配置保持一致,默认配置如下 + ```json + "mysql": { + "prod": { + "database": "doraemon", + "host": "0.0.0.0", + "port": "3302", + "password": "******" + } + } + ``` + mysql 镜像的 docker run 默认如下 + ```bash + docker run -d \ + --name="doraemon_mysql" \ + -v $v_path:/var/lib/mysql \ + -e MYSQL_ROOT_HOST=% \ + -e MYSQL_ROOT_PASSWORD=$mysql_pwd \ + -p 3302:3306 \ + $imageName + ``` +2. 进到 `dockerScripts` 文件夹下,在 `const.sh` 配置镜像信息(`image_mysql`, `image_web`, `version` 等) + +3. 执行 build 命令 + + ```bash + $ yarn build:docker + ``` + +4. 待构建完成并推到仓库后,登入部署服务器,拉取镜像并启动容器 + +## 启动镜像 + +1. 登入部署服务器,进到 `dockerScripts` 文件夹下,修改 `const.sh` 文件中 `v_path` (数据卷的存储路径) + +2. 启动容器 + 回到根目录下,执行启动命令,拉取最新镜像,并启动 + + ```bash + $ yarn start:docker + ``` + + 如果是第一次启动,尚未初始化库表结构,请执行 `-volume` 命令(历史数据需手动迁移) + + ```bash + $ yarn start:docker -volume + ``` + +3. 上述操作会删除原有容器和镜像,拉取最新镜像,如果只是重启停止的容器,仅需要 start 即可 + + ```bash + $ docker start + ``` + +4. 如遇到容器启动失败,请根据错误提示停止或者删除容器及镜像,在重新执行 `start:docker` 命令 + +## 访问 + +1. 访问地址: http://127.0.0.1:7002 +2. 如需修改端口,需修改 `package.json` 启动脚本中的 `server:docker` 配置,并重新构建镜像 + +## 配置及脚本详解 + +涉及到的配置及脚本有以下几个文件 + +- env.json +- dockerScripts/const.sh +- dockerScripts/docker_start.sh +- dockerScripts/make.sh + +#### env.json + +这里涉及到的是数据库相关信息的配置,若使用项目提供的 mysql 镜像,则需要和 mysql 容器的数据库信息相匹配,若使用服务器上的数据库信息,则配置对应的 database, password 等信息,重新执行 `sh make_web.sh` 构建 web 镜像。 +`env.json` 文件修改后,都需要重新构建镜像,不推荐。 + +#### dockerScripts/const.sh + +- `image_mysql`: mysql 镜像名 +- `image_web`: web 镜像名 +- `version`: 镜像版本号 +- `mysql_pwd`: mysql 容器默认设置的 root 账号密码(需和 env.json 中 mysql password 保持一致) +- `v_path`: mysql 数据存储路径 + +#### dockerScripts/docker_start.sh + +**传参详解** +容器启动脚本,支持两个传参 + +- `$1`: web / mysql,用于区分启动容器类型 +- `$2`: -volume,用于初始化数据库表结构 + 执行该命令,会启动 web 容器 + +```bash +sh docker_start.sh web +``` + +执行该命令,会启动 mysql 容器,并初始化数据库表结构 + +```bash +sh docker_start.sh mysql -volume +``` + +**启动命令详解** + +```bash + docker run -d \ + --name="doraemon_mysql" \ + -v $v_path:/var/lib/mysql \ + -e MYSQL_ROOT_HOST=% \ + -e MYSQL_ROOT_PASSWORD=$mysql_pwd \ + -p 3302:3306 \ + $imageName +``` + +- `-v`: `-v <宿主存储路径>:<容器内部路径>` +- `-e`: 指定 root 的 password +- `-p`: `-p <宿主端口>:<容器端口>` 此处对外映射 3302 端口 + +#### dockerScripts/make_web.sh + +该脚本执行了两个操作 `docker build`, `docker push`。可根据实际需求处理。 From 9dd3fd369bfe82c54a8c67e1272fef711766a0a2 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Tue, 27 Dec 2022 17:44:30 +0800 Subject: [PATCH 10/18] fix: write off mysql source path --- dockerScripts/const.sh | 2 -- dockerScripts/docker_start.sh | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dockerScripts/const.sh b/dockerScripts/const.sh index c34b563..aa39cf5 100644 --- a/dockerScripts/const.sh +++ b/dockerScripts/const.sh @@ -7,6 +7,4 @@ export version=0.0.2 export mysql_pwd=123456 -export mysql_path=/app/doraemon/doraemon.sql - export v_path=/home/app/doraemon_docker/data diff --git a/dockerScripts/docker_start.sh b/dockerScripts/docker_start.sh index bd151cb..7eb7300 100644 --- a/dockerScripts/docker_start.sh +++ b/dockerScripts/docker_start.sh @@ -4,6 +4,7 @@ source ./const.sh # 导入 sql 文件 soucreSql() { containerId=$(docker ps -a | grep $image_mysql | awk '{print $1}') + mysql_path=/app/doraemon/doraemon.sql docker exec -i $containerId mysql -uroot -p$mysql_pwd < Date: Tue, 27 Dec 2022 17:56:29 +0800 Subject: [PATCH 11/18] docs: modify docker deploy doc --- README-zh_CN.md | 18 +++--------------- README.md | 17 +++-------------- .../start/Docker\351\203\250\347\275\262.md" | 2 +- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/README-zh_CN.md b/README-zh_CN.md index a91eb8f..b8da3a7 100644 --- a/README-zh_CN.md +++ b/README-zh_CN.md @@ -63,27 +63,15 @@ yarn start:test // 测试环境发布 ## 使用 Docker 部署(仅支持 Linux) #### 构建镜像(如果镜像已在 Docker Hub 中,可跳过此步) +1. 修改 `./dockerScripts/const.sh` 文件配置的镜像信息(`image_mysql`, `image_web`, `version` 等) -1. 修改根目录的 `env.json` 文件中的 `mysql` 配置,该配置项需要和 `./dockerScripts/docker_start.sh` 中 mysql 镜像的启动命令配置保持一致,默认配置如下 - ```json - "mysql": { - "prod": { - "database": "doraemon", - "host": "0.0.0.0", - "port": "3302", - "password": "******" - } - } - ``` -2. 进到 `dockerScripts` 文件夹下,在 `const.sh` 配置镜像信息(`image_mysql`, `image_web`, `version` 等) - -3. 执行 build 命令 +2. 执行 build 命令 ```bash $ yarn build:docker ``` -4. 待构建完成并推到仓库后,登入部署服务器,拉取镜像并启动容器 +3. 待构建完成并推到仓库后,登入部署服务器,拉取镜像并启动容器 #### 启动镜像 diff --git a/README.md b/README.md index 4943b02..c274494 100755 --- a/README.md +++ b/README.md @@ -62,26 +62,15 @@ yarn start:test // test environment publishing #### Images build(If the image is already in the Docker Hub, skip this step) -1. Modify the `mysql` configuration in the root `env.json` file. This configuration item needs to be consistent with the startup command configuration of the mysql image in `./dockerScripts/docker_start.sh` - ```json - "mysql": { - "prod": { - "database": "doraemon", - "host": "0.0.0.0", - "port": "3302", - "password": "******" - } - } - ``` -2. `cd ./dockerScripts`, configure the image information in the `const.sh`(such as `image_mysql`, `image_web`, `version` and so on) +1. Modify the configure of the image information in the `./dockerScripts/const.sh`(such as `image_mysql`, `image_web`, `version` and so on) -3. image build +2. Image build ```bash $ yarn build:docker ``` -4. After the build is complete and pushed to the repository, log in to the deployment server, pull the image and start the container +3. After the build is complete and pushed to the repository, log in to the deployment server, pull the image and start the container #### Container run diff --git "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" index fff6b78..650f704 100644 --- "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" +++ "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" @@ -23,7 +23,7 @@ -p 3302:3306 \ $imageName ``` -2. 进到 `dockerScripts` 文件夹下,在 `const.sh` 配置镜像信息(`image_mysql`, `image_web`, `version` 等) +2. 修改 `./dockerScripts/const.sh` 文件配置的镜像信息(`image_mysql`, `image_web`, `version` 等) 3. 执行 build 命令 From 67af36f31c4a276a42846ab8c0d295194027eab0 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 10:47:48 +0800 Subject: [PATCH 12/18] feat: distinguish between docker and prod configurations --- config/config.prod.js | 8 +++++++- config/config.test.js | 2 +- env.json | 6 ++++-- package.json | 5 +++-- yarn.lock | 9 ++++++++- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/config/config.prod.js b/config/config.prod.js index 304b91d..c67e7b6 100644 --- a/config/config.prod.js +++ b/config/config.prod.js @@ -1,5 +1,11 @@ const config = require('../env.json'); -const mysqlConfig = (config && config.mysql && config.mysql.prod) || {}; +const mysqlConfig = (config + && config.mysql + && ( + process.env.DEPLOY_ENV === 'docker' + ? config.mysql.docker + : config.mysql.prod + )) || {}; const { database, host, port, username, password } = mysqlConfig; /** diff --git a/config/config.test.js b/config/config.test.js index 554a3a1..5b87bad 100644 --- a/config/config.test.js +++ b/config/config.test.js @@ -1,5 +1,5 @@ const config = require('../env.json'); -const mysqlConfig = (config && config.mysql && config.mysql.prod) || {}; +const mysqlConfig = (config && config.mysql && config.mysql.test) || {}; const { database, host, port, username, password } = mysqlConfig; /** diff --git a/env.json b/env.json index daec7b5..8ffc894 100644 --- a/env.json +++ b/env.json @@ -6,11 +6,13 @@ "articleHelpDocUrl": "https://dtstack.github.io/doraemon/docsify/#/zh-cn/guide/%E6%96%87%E7%AB%A0%E8%AE%A2%E9%98%85", "proxyHelpDocUrl": "https://dtstack.github.io/doraemon/docsify/#/zh-cn/guide/%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1", "mysql": { - "prod": { + "test": {}, + "prod": {}, + "docker": { "database": "doraemon", "host": "0.0.0.0", "port": "3302", "password": "123456" } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 98d24ff..bcc4e06 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "start:docker": "sh ./dockerScripts/start.sh", "server": "egg-scripts start --daemon", "server:test": "egg-scripts start --port=7002 --env=test --daemon", - "server:docker": "egg-scripts start --port=7002", + "server:docker": "cross-env DEPLOY_ENV=docker egg-scripts start --port=7002", "dingBot": "node DingBot.js", "stop": "egg-scripts stop", "lint": "eslint .", @@ -97,6 +97,7 @@ "commitizen": "^4.0.3", "commitlint": "^8.2.0", "conventional-changelog-cli": "^2.0.28", + "cross-env": "^7.0.3", "cz-conventional-changelog": "^3.3.0", "docsify-cli": "^4.4.3", "easywebpack-cli": "^4.3.5", @@ -146,4 +147,4 @@ "path": "./node_modules/cz-conventional-changelog" } } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 9c5d87f..5b0fe75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5806,6 +5806,13 @@ cropperjs@^1.5.1: resolved "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.13.tgz#eb1682f01d17c70ed5244317091d745c9a249ef8" integrity sha512-by7jKAo73y5/Do0K6sxdTKHgndY0NMjG2bEdgeJxycbcmHuCiMXqw8sxy5C5Y5WTOTcDGmbT7Sr5CgKOXR06OA== +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + cross-port-killer@^1.0.1: version "1.4.0" resolved "https://registry.npmmirror.com/cross-port-killer/-/cross-port-killer-1.4.0.tgz#9e37b79c613b830e08122e342d31d5dadc3c7b67" @@ -5839,7 +5846,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.4: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== From e6170ce2bae3fe405eab19c059a5da793bea6467 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 10:48:06 +0800 Subject: [PATCH 13/18] docs: modify docs --- docs/docsify/zh-cn/configuration/envConfig.md | 8 ++++++-- .../zh-cn/start/Docker\351\203\250\347\275\262.md" | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/docsify/zh-cn/configuration/envConfig.md b/docs/docsify/zh-cn/configuration/envConfig.md index 08e6dd3..adb506b 100644 --- a/docs/docsify/zh-cn/configuration/envConfig.md +++ b/docs/docsify/zh-cn/configuration/envConfig.md @@ -94,18 +94,22 @@ dingBot 的通知模板的跳转路径,默认跳转到帮助文档,可自行 - 类型:Object - 默认值:无 -数据库连接配置,目前仅提供 config.prod.js 生产下的数据库连接配置 +数据库连接配置,提供不同环境下的数据库连接配置 +- test => config.test.js +- prod/docker => config.prod.js (其中,mysql.docker 配置仅在 Docker 部署的情况下生效) ```json { "mysql": { + "test": {}, "prod": { "database": "doraemon", "host": "127.0.0.1", "port": 3306, "username": "root", "password": "******" - } + }, + "docker": {} } } ``` diff --git "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" index 650f704..d5769e9 100644 --- "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" +++ "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" @@ -5,7 +5,7 @@ 1. 修改根目录的 `env.json` 文件中的 `mysql` 配置,该配置项需要和 `./dockerScripts/docker_start.sh` 中 mysql 镜像的启动命令配置保持一致,默认配置如下 ```json "mysql": { - "prod": { + "docker": { "database": "doraemon", "host": "0.0.0.0", "port": "3302", From 6e48e8cfec4d58fdef04da1f8b641270fc766cb2 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 10:50:18 +0800 Subject: [PATCH 14/18] fix: when web container stop, do not remove --- dockerScripts/docker_start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerScripts/docker_start.sh b/dockerScripts/docker_start.sh index 7eb7300..8b7c310 100644 --- a/dockerScripts/docker_start.sh +++ b/dockerScripts/docker_start.sh @@ -34,7 +34,7 @@ reRunContainer() { # 启动 if [[ $imageName =~ $image_web ]]; then - docker run --rm -d --net=host $imageName + docker run -d --net=host $imageName else docker run -d \ --name="doraemon_mysql" \ From a2f0bc2e3bbdb4f18d7f8ae86e71f7de58d12a30 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 15:02:13 +0800 Subject: [PATCH 15/18] fix: optimize config --- dockerScripts/const.sh | 4 ++-- sql/doraemon.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dockerScripts/const.sh b/dockerScripts/const.sh index aa39cf5..0c237e4 100644 --- a/dockerScripts/const.sh +++ b/dockerScripts/const.sh @@ -1,7 +1,7 @@ #!/bin/bash -export image_mysql=172.16.84.121/dtstack-dev/doraemon_mysql +export image_mysql=doraemon/doraemon_mysql -export image_web=172.16.84.121/dtstack-dev/doraemon_web +export image_web=doraemon/doraemon_web export version=0.0.2 diff --git a/sql/doraemon.sql b/sql/doraemon.sql index eb326ca..e5c38b0 100644 --- a/sql/doraemon.sql +++ b/sql/doraemon.sql @@ -36,7 +36,7 @@ CREATE TABLE `app_centers` ( `status` int DEFAULT '1', `clickCount` int DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('Remote Hosts', NULL, 0, NULL, 'host集中管理系统', '/page/switch-hosts-list', NOW(), NOW(), 1, 0); INSERT INTO app_centers (appName, appTags, appType, logoUrl, appDesc, appUrl, created_at, updated_at, status, clickCount) VALUES ('文章订阅', NULL, 0, NULL, '定时推送技术网站排行榜到钉钉群,每天都能学到新知识', '/page/article-subscription-list', NOW(), NOW(), 1, 0); From e64c1c1257fcd4be2fdfca1520b639291322452f Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 15:02:47 +0800 Subject: [PATCH 16/18] feat: add rm container function, rm container before build --- dockerScripts/docker_start.sh | 15 +++------------ dockerScripts/make_mysql.sh | 4 ++++ dockerScripts/make_web.sh | 6 +++++- dockerScripts/utils.sh | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 dockerScripts/utils.sh diff --git a/dockerScripts/docker_start.sh b/dockerScripts/docker_start.sh index 8b7c310..004331e 100644 --- a/dockerScripts/docker_start.sh +++ b/dockerScripts/docker_start.sh @@ -1,5 +1,6 @@ #!/bin/bash source ./const.sh +source ./utils.sh # 导入 sql 文件 soucreSql() { @@ -16,18 +17,8 @@ EOF reRunContainer() { imageName=$1:$version - # 停止容器并删除 - containerId=$(docker ps -a | grep $imageName | awk '{print $1}') - if [[ $containerId ]]; then - docker stop $containerId - docker rm $containerId - fi - - # 删除老镜像 - imageId=$(docker images | grep $1 | awk '{print $3}') - if [[ $imageId ]]; then - docker rmi $imageId - fi + # 停止并删除原有容器和镜像 + rmContainer $1 $version # 拉取镜像 docker image pull $imageName diff --git a/dockerScripts/make_mysql.sh b/dockerScripts/make_mysql.sh index e7a4884..75fccd6 100644 --- a/dockerScripts/make_mysql.sh +++ b/dockerScripts/make_mysql.sh @@ -1,8 +1,12 @@ #!/bin/bash source ./const.sh +source ./utils.sh imageName=$image_mysql:$version +# 停止并删除原有容器和镜像 +rmContainer $image_mysql $version + docker build -t $imageName ../sql docker push $imageName \ No newline at end of file diff --git a/dockerScripts/make_web.sh b/dockerScripts/make_web.sh index 9dc7861..724266a 100644 --- a/dockerScripts/make_web.sh +++ b/dockerScripts/make_web.sh @@ -1,8 +1,12 @@ #!/bin/bash source ./const.sh +source ./utils.sh imageName=$image_web:$version +# 停止并删除原有容器和镜像 +rmContainer $image_web $version +# 构建镜像 docker build -t $imageName ../ - +# 推到仓库 docker push $imageName diff --git a/dockerScripts/utils.sh b/dockerScripts/utils.sh new file mode 100644 index 0000000..eca1774 --- /dev/null +++ b/dockerScripts/utils.sh @@ -0,0 +1,16 @@ +rmContainer () { + $imageName=$1:$2 + # 停止容器并删除 + containerId=$(docker ps -a | grep $imageName | awk '{print $1}') + if [[ $containerId ]]; then + docker stop $containerId + docker rm $containerId + fi + + # 删除老镜像 + imageId=$(docker images | grep $1 | awk '{print $3}') + if [[ $imageId ]]; then + docker rmi $imageId + fi +} +export -f rmContainer \ No newline at end of file From b245d7258b2c3e31c2ba4bf9b9fdd4ca47d89d39 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 15:30:58 +0800 Subject: [PATCH 17/18] docs: modify docker deploy doc --- .../zh-cn/start/Docker\351\203\250\347\275\262.md" | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" index d5769e9..b17cff9 100644 --- "a/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" +++ "b/docs/docsify/zh-cn/start/Docker\351\203\250\347\275\262.md" @@ -24,6 +24,11 @@ $imageName ``` 2. 修改 `./dockerScripts/const.sh` 文件配置的镜像信息(`image_mysql`, `image_web`, `version` 等) + ```bash + export image_mysql=/doraemon_mysql + export image_web=/doraemon_web + export version= + ``` 3. 执行 build 命令 @@ -36,6 +41,9 @@ ## 启动镜像 1. 登入部署服务器,进到 `dockerScripts` 文件夹下,修改 `const.sh` 文件中 `v_path` (数据卷的存储路径) + ```bash + export v_path=/home/app/doraemon_docker/data + ``` 2. 启动容器 回到根目录下,执行启动命令,拉取最新镜像,并启动 From 6bd51609925911055ab6c2778d0c3c075df09a76 Mon Sep 17 00:00:00 2001 From: nankanull <534129087@qq.com> Date: Wed, 28 Dec 2022 15:31:19 +0800 Subject: [PATCH 18/18] fix: fix shell bug --- dockerScripts/utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerScripts/utils.sh b/dockerScripts/utils.sh index eca1774..6c7ac8a 100644 --- a/dockerScripts/utils.sh +++ b/dockerScripts/utils.sh @@ -1,5 +1,5 @@ rmContainer () { - $imageName=$1:$2 + imageName=$1:$2 # 停止容器并删除 containerId=$(docker ps -a | grep $imageName | awk '{print $1}') if [[ $containerId ]]; then