Browse Source

fix: Dockerfile only build

ryanemax 8 months ago
parent
commit
d9a36cbaa6
6 changed files with 61 additions and 50 deletions
  1. 1 1
      deploy-www.sh
  2. 19 20
      docker/Dockerfile
  3. 15 21
      docker/build.sh
  4. 3 2
      docker/make.sh
  5. 22 5
      server/deploy.sh
  6. 1 1
      server/keepalive.js

+ 1 - 1
deploy-www.sh

@@ -13,4 +13,4 @@ ssh $DEV_HOST "mkdir -p $TEMP_WWW"
 tar zcvf dist/edu-textbook-www.tar.gz dist/textbook/browser/
 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 -rf dist/textbook/browser/* edu-textbook/ \"" # 仅安装prod
+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

+ 19 - 20
docker/Dockerfile

@@ -3,14 +3,10 @@ MAINTAINER FmodeInc "support@fmode.cn"
 
 ARG NODE_VERSION
 ARG TERM
-ARG CMS_DOMAIN
-ARG CMS_DISABLE
 ARG NGINX_DISABLE
 ######################################## ENV LIST
 ENV NODE_VERSION $NODE_VERSION
 ENV TERM $TERM
-ENV CMS_DOMAIN $CMS_DOMAIN
-ENV CMS_DISABLE $CMS_DISABLE
 ENV NGINX_DISABLE $NGINX_DISABLE
 
 # ENV NODE_VERSION 18.15.0
@@ -18,15 +14,6 @@ ENV NGINX_DISABLE $NGINX_DISABLE
 # ENV NODE_SERVER_PATH $nova_server_path
 # ENV NODE_CMS_PATH $nova_cms_path
 
-
-######################################## Copy Latest Nova Cloud
-COPY ./opt/ /opt/
-COPY ./var/ /var/
-
-RUN cd /var/www/ && tar zxvf edu-textbook-www.tar.gz && cp -rf dist/textbook/browser/* edu-textbook/
-
-RUN ls /opt/ && chown -R root:root /opt/*
-
 ######################################## APT Repos to 163
 # RUN apt-get update
 
@@ -34,12 +21,6 @@ ADD sources.list /etc/apt/
 
 RUN apt-get update
 
-######################################## Nginx
-# curl http检测
-# procps 进程管理
-RUN apt-get install -y nginx procps && apt-get install -y nginx curl --no-install-recommends \
-  && rm -rf /etc/nginx/sites-enabled/* && cp -rf /opt/nginx/* /etc/nginx/sites-enabled && service nginx restart
-
 ######################################## NODE
 
 RUN groupadd --gid 1000 node \
@@ -67,7 +48,25 @@ RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
     && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
     && ln -s /usr/local/bin/node /usr/local/bin/nodejs
 
-######################################## PM2 && bytenode
+
+
+######################################## 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
+
+
+######################################## 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 i -g bytenode@1.3.6
 

+ 15 - 21
docker/build.sh

@@ -1,30 +1,24 @@
-PROJECT_NAME=edu-textbook
-PROJECT_VERSION=1.0.0
-NODE_VERSION=18.19.1
+sudo docker build \
+--build-arg NODE_VERSION=18.19.1 \
+--tag fmode:edu-textbook-1.0.0 .
 
 
 
 # 服务端
-mkdir -p opt/edu-textbook-server
-mkdir -p opt/certs/tbook.com.cn/
-cp ../server/dist/server/server.js opt/edu-textbook-server/
-cp ../server/package.json opt/edu-textbook-server/
-cp ../server/config.js opt/edu-textbook-server/
-cp ../server/keepalive.js opt/edu-textbook-server/
-cp ../server/config/certs/* opt/certs/tbook.com.cn/
+# mkdir -p opt/edu-textbook-server/certs
+# mkdir -p opt/certs/tbook.com.cn/
+# cp ../server/dist/server/server.js opt/edu-textbook-server/
+# cp ../server/package.json opt/edu-textbook-server/
+# cp ../server/config.js opt/edu-textbook-server/
+# cp ../server/keepalive.js opt/edu-textbook-server/
+# cp ../server/config/certs/* opt/certs/tbook.com.cn/certs/
+
+# mkdir -p opt/nginx
+# cp ../server/config/nginx-server.conf opt/edu-textbook-server/nginx/
 
-mkdir -p opt/nginx
-cp ../server/config/nginx-server.conf opt/nginx/
 # 前端
-mkdir -p var/www/edu-textbook
-cp ../dist/edu-textbook-www.tar.gz var/www/
+# mkdir -p var/www/edu-textbook
+# cp ../dist/edu-textbook-www.tar.gz var/www/
 
 
 # 构建
-sudo docker build \
---build-arg CMS_DOMAIN=$CMS_DOMAIN \
---build-arg CMS_DISABLE=$CMS_DISABLE \
---build-arg NODE_VERSION=$NODE_VERSION \
---build-arg TERM=$TERM \
---build-arg NGINX_DISABLE=$NGINX_DISABLE \
---tag fmode:$PROJECT_NAME-$PROJECT_VERSION .

+ 3 - 2
docker/make.sh

@@ -1,6 +1,7 @@
 
-
+# 运行容器
 PNAME='edu-textbook-1.0.0' \
 && sudo docker run -d -p 80:80 -p 81:81 -p 443:443 -p 61337:61337 --name $PNAME --restart=always fmode:$PNAME
 
-# sudo docker save fmode:$PROJECT_NAME-$PROJECT_VERSION -o ../installation/fmode-$PROJECT_NAME-$PROJECT_VERSION.tar
+# 导出镜像
+sudo docker save fmode:edu-textbook-1.0.0 -o ../dist/fmode-edu-textbook-1.0.0.tar

+ 22 - 5
server/deploy.sh

@@ -7,12 +7,29 @@ PROD_HOST=root@8.140.98.43
 # 部署路径
 DIR_SERVER=/opt/edu-textbook-server
 
-# 部署过程
+# 资源文件
+cp -rf config dist/server/
+cp package.json dist/server/
+cp config.js dist/server/
+cp keepalive.js dist/server/
+cd dist
+tar zcvf server.tar.gz ./server
+cd ..
+
+# 压缩部署
 ssh $DEV_HOST "mkdir -p $DIR_SERVER"
-scp dist/server/server.js $DEV_HOST:$DIR_SERVER/
-scp ./package.json $DEV_HOST:$DIR_SERVER/
-scp ./config.js $DEV_HOST:$DIR_SERVER/
-ssh $DEV_HOST "scp -r $DIR_SERVER $PROD_HOST:/opt/"
+scp dist/server.tar.gz $DEV_HOST:$DIR_SERVER/
+ssh $DEV_HOST "scp -r $DIR_SERVER/server.tar.gz $PROD_HOST:/opt/"
+ssh $DEV_HOST "ssh $PROD_HOST \"cd /opt/ && tar zxvf server.tar.gz && cp -rf server/* edu-textbook-server/\"" # 仅安装prod
+ssh $DEV_HOST "ssh $PROD_HOST \"cd /opt/ && cp server.tar.gz /var/www/edu-textbook\"" # 仅安装prod
+
+
+# 部署过程
+# ssh $DEV_HOST "mkdir -p $DIR_SERVER"
+# scp dist/server/server.js $DEV_HOST:$DIR_SERVER/
+# scp ./package.json $DEV_HOST:$DIR_SERVER/
+# scp ./config.js $DEV_HOST:$DIR_SERVER/
+# ssh $DEV_HOST "scp -r $DIR_SERVER $PROD_HOST:/opt/"
 
 # 启动过程
 ssh $DEV_HOST "ssh $PROD_HOST \"cd $DIR_SERVER && ls -lah\"" # 仅安装prod

+ 1 - 1
server/keepalive.js

@@ -10,7 +10,7 @@ const exec = require('child_process').exec;
         {host:"127.0.0.1",port:"61337",httpchk:"/parse",name:"server",cmd:"pm2 restart server"},
     ]
 const keepaliveTask = ()=>{
-    shell.exec(`cd /opt/edu-textbook-server && pm2 start server.js`,{silent:true})
+    shell.exec(`cd /opt/edu-textbook-server && pm2 start server.js -i max`,{silent:true})
     //每分钟的1-10秒都会触发,其它通配符依次类推
     schedule.scheduleJob('*/10 * * * * *', ()=>{
         appList.forEach(app=>{