Ver código fonte

feat: docker scripts

ryanemax 8 meses atrás
pai
commit
f505391bb6
11 arquivos alterados com 51 adições e 29 exclusões
  1. 2 0
      .gitignore
  2. 1 0
      deploy-www.sh
  3. 0 1
      docker/.gitignore
  4. 10 15
      docker/Dockerfile
  5. 24 0
      docker/README.md
  6. 0 3
      docker/build.sh
  7. 0 6
      docker/make.sh
  8. 5 0
      docker/update.sh
  9. 3 0
      server/deploy.sh
  10. 4 2
      server/package-lock.json
  11. 2 2
      server/package.json

+ 2 - 0
.gitignore

@@ -1,5 +1,7 @@
 # See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
 
+opt/
+
 # Compiled output
 /dist
 /tmp

+ 1 - 0
deploy-www.sh

@@ -11,6 +11,7 @@ TEMP_WWW=/opt/edu-textbook-www
 ng build textbook
 ssh $DEV_HOST "mkdir -p $TEMP_WWW"
 tar zcvf dist/edu-textbook-www.tar.gz dist/textbook/browser/
+cp dist/edu-textbook-www.tar.gz docker/opt/ # docker 目录
 scp dist/edu-textbook-www.tar.gz $DEV_HOST:$TEMP_WWW/
 ssh $DEV_HOST "scp -r $TEMP_WWW/edu-textbook-www.tar.gz $PROD_HOST:/var/www/"
 ssh $DEV_HOST "ssh $PROD_HOST \"cd /var/www/ && tar zxvf edu-textbook-www.tar.gz && cp edu-textbook-www.tar.gz edu-textbook/ && cp -rf dist/textbook/browser/* edu-textbook/ \"" # 仅安装prod

+ 0 - 1
docker/.gitignore

@@ -1 +0,0 @@
-/opt/*

+ 10 - 15
docker/Dockerfile

@@ -9,10 +9,6 @@ ENV NODE_VERSION $NODE_VERSION
 ENV TERM $TERM
 ENV NGINX_DISABLE $NGINX_DISABLE
 
-# ENV NODE_VERSION 18.15.0
-# ENV NODE_VERSION 16.3.0
-# ENV NODE_SERVER_PATH $nova_server_path
-# ENV NODE_CMS_PATH $nova_cms_path
 
 ######################################## APT Repos to 163
 # RUN apt-get update
@@ -49,25 +45,24 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
     && ln -s /usr/local/bin/node /usr/local/bin/nodejs
 
 
-
-######################################## Copy Latest Nova Cloud
-COPY ./opt/ /opt/
-COPY ./var/ /var/
-
-RUN cd /var/www/ && wget http://8.140.98.43/edu-textbook-www.tar.gz && tar zxvf edu-textbook-www.tar.gz && cp -rf dist/textbook/browser/* edu-textbook/
-RUN cd /opt/ && wget http://8.140.98.43/server.tar.gz && tar zxvf server.tar.gz && mv server/* edu-textbook-server/ && mkdir -p /etc/nginx/sites-enabled/ && cp -rf /opt/edu-textbook-server/config/nginx-server.conf /etc/nginx/sites-enabled/
-
-RUN ls /opt/ && chown -R root:root /opt/*
-
 ######################################## Nginx
 # curl http检测
 # procps 进程管理
 RUN apt-get update &&apt-get install -y nginx procps && apt-get install -y nginx curl --no-install-recommends \
   && rm -rf /etc/nginx/sites-enabled/*  && service nginx restart
 
+######################################## Copy Latest System
+COPY ./opt/ /opt/
+
+RUN mkdir -p /var/www/edu-textbook/ && cd /var/www/ && mv /opt/edu-textbook-www.tar.gz . && tar zxvf edu-textbook-www.tar.gz && cp -rf dist/textbook/browser/* edu-textbook/
+RUN mkdir -p /opt/edu-textbook-server/ && cd /opt/ && tar zxvf server.tar.gz && mv server/* edu-textbook-server/ && mkdir -p /etc/nginx/sites-enabled/ && cp -rf /opt/edu-textbook-server/config/nginx-server.conf /etc/nginx/sites-enabled/ && service nginx restart
+
+RUN ls /opt/ && chown -R root:root /opt/*
+
 
 ######################################## PM2 && server node_modules
-RUN npm config set registry https://registry.npmmirror.com/ && npm i -g pm2@5.1.1 && cd /opt/edu-textbook-server/ && npm i -f
+RUN npm config set registry https://registry.npmmirror.com/ && npm i -g npm@10.8.1 && npm i -g pm2@^5.0.0 
+RUN cd /opt/edu-textbook-server/ && npm i --omit dev  --no-warn
 # RUN npm i -g bytenode@1.3.6
 
 ######################################## Deploy Latest Nova Cloud

+ 24 - 0
docker/README.md

@@ -0,0 +1,24 @@
+# 十四五本科教材部署项目
+
+# 目录资源
+- /opt/ 软件包
+    - edu-textbook-www.tar.gz 前端项目
+    - server.tar.gz 后端项目
+- sources.list 国内源
+- Dockerfile 容器编制脚本
+
+# 常用指令
+
+``` bash
+# 容器构建
+sudo docker build \
+--build-arg NODE_VERSION=18.19.1 \
+--tag fmode:edu-textbook-1.0.0 .
+
+# 运行容器
+sudo docker run -d -p 80:80 -p 81:81 -p 443:443 -p 61337:61337 --name edu-textbook-1.0.0 --restart=always fmode:edu-textbook-1.0.0
+
+# 导出镜像
+sudo docker save fmode:edu-textbook-1.0.0 -o ../dist/fmode-edu-textbook-1.0.0.tar
+
+```

+ 0 - 3
docker/build.sh

@@ -1,3 +0,0 @@
-sudo docker build \
---build-arg NODE_VERSION=18.19.1 \
---tag fmode:edu-textbook-1.0.0 .

+ 0 - 6
docker/make.sh

@@ -1,6 +0,0 @@
-
-# 运行容器
-sudo docker run -d -p 80:80 -p 81:81 -p 443:443 -p 61337:61337 --name edu-textbook-1.0.0 --restart=always fmode:edu-textbook-1.0.0
-
-# 导出镜像
-sudo docker save fmode:edu-textbook-1.0.0 -o ../dist/fmode-edu-textbook-1.0.0.tar

+ 5 - 0
docker/update.sh

@@ -0,0 +1,5 @@
+# 更新前后端软件包至opt/
+cd ../
+./deploy-www.sh
+cd server
+./deploy.sh

+ 3 - 0
server/deploy.sh

@@ -10,10 +10,13 @@ DIR_SERVER=/opt/edu-textbook-server
 # 资源文件
 cp -rf config dist/server/
 cp package.json dist/server/
+sed -i '/@embedded/d' dist/server/package.json
+sed -i '/@embedded/d' dist/server/package.json
 cp config.js dist/server/
 cp keepalive.js dist/server/
 cd dist
 tar zcvf server.tar.gz ./server
+cp server.tar.gz ../../docker/opt/
 cd ..
 
 # 压缩部署

+ 4 - 2
server/package-lock.json

@@ -9,8 +9,6 @@
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
-        "@embedded-postgres/linux-x64": "^16.2.0-beta.11",
-        "@embedded-postgres/windows-x64": "^16.2.0-beta.11",
         "ali-oss": "^6.20.0",
         "authing-js-sdk": "^4.23.51",
         "authing-node-sdk": "^3.1.0",
@@ -24,6 +22,8 @@
         "server": "server.js"
       },
       "devDependencies": {
+        "@embedded-postgres/linux-x64": "^16.2.0-beta.11",
+        "@embedded-postgres/windows-x64": "^16.2.0-beta.11",
         "pkg": "^5.8.1",
         "vite": "^4.5.3",
         "vite-plugin-dts": "^3.9.1",
@@ -743,6 +743,7 @@
       "cpu": [
         "x64"
       ],
+      "dev": true,
       "hasInstallScript": true,
       "os": [
         "linux"
@@ -758,6 +759,7 @@
       "cpu": [
         "x64"
       ],
+      "dev": true,
       "hasInstallScript": true,
       "os": [
         "win32"

+ 2 - 2
server/package.json

@@ -28,8 +28,6 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "@embedded-postgres/linux-x64": "^16.2.0-beta.11",
-    "@embedded-postgres/windows-x64": "^16.2.0-beta.11",
     "ali-oss": "^6.20.0",
     "authing-js-sdk": "^4.23.51",
     "authing-node-sdk": "^3.1.0",
@@ -40,6 +38,8 @@
     "yargs": "17.7.2"
   },
   "devDependencies": {
+    "@embedded-postgres/linux-x64": "^16.2.0-beta.11",
+    "@embedded-postgres/windows-x64": "^16.2.0-beta.11",
     "pkg": "^5.8.1",
     "vite": "^4.5.3",
     "vite-plugin-dts": "^3.9.1",