当前位置: 首页 > news >正文

【阿里云系列】-基于云效构建部署NodeJS项目到ACK

准备工作

01、编写Dockerfile文件可以根据不同的环境,新建不同的Dockerfile文件,比如Dockerfile-PROD

# Deliver the dist folder with NginxFROM nginx:stable-alpine
ENV LANG=C.UTF-8
ENV TZ=Asia/ShanghaiCOPY dist/ /usr/share/nginx/html
COPY nginx-prod.conf /etc/nginx/conf.d/default.conf
RUN chown -R nginx:nginx /usr/share/nginx/htmlEXPOSE 80 443
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
CMD ["/entrypoint.sh"]

02.编写nginx配置文件(nginx-prod.conf)

gzip on;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml text/html;server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;server {listen 8080 default_server;server_tokens off;server_name order.test.com.cn;# 将该服务下的所有请求实体的大小限制为50mclient_max_body_size 50m;root /usr/share/nginx/html;index /test-web/index.html;location ~ ^/(css|js)/ {# These assets include a digest in the filename, so they will never changeexpires max;}location @router {rewrite ^.*$ /test-web/index.html last;}location ~* ^.+\.(html|htm)$ {# Very short caching time to ensure changes are immediately recognizedexpires 5m;}location  /api/v1/ {proxy_pass http://192.168.10.41/;#后端api网关服务在ACK中的集群IPproxy_set_header Host   $host;proxy_set_header X-Real-IP      $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location / {add_header Cache-Control "no-cache, no-store";add_header X-Frame-Options "DENY";add_header X-Content-Type-Options "nosniff";add_header 'Access-Control-Allow-Origin' "https://order.test.com.cn";add_header 'Access-Control-Allow-Credentials' 'true';add_header Access-Control-Allow-Methods "GET,POST,PUT,DELETE , OPTIONS";  # 添加允许的请求方法add_header 'Access-Control-Allow-Headers' *;# add_header Content-Security-Policy "default-src 'self';https://legit1.com https://legit2.com; report-uri /reportingurl;";add_header Content-Security-Policy "default-src 'self';" always;try_files $uri $uri/ @router;}
}

03. 编写启动nginx文件(entrypoint.sh)

#!/bin/sh# Replace env vars in JavaScript files
#echo "Replacing env vars in JS"
#for file in /usr/share/nginx/html/js/app.*.js;
#do
#  echo "Processing $file ...";
#
#  # Use the existing JS file as template
#  if [ ! -f $file.tmpl.js ]; then
#    cp $file $file.tmpl.js
#  fi
#
#  envsubst '$VUE_APP_BACKEND_HOST,$VUE_APP_MATOMO_HOST,$VUE_APP_MATOMO_ID' < $file.tmpl.js > $file
#doneecho "Starting Nginx"
nginx -g 'daemon off;'

04.编写部署ack的yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:name: test-webnamespace: prod  labels:app: test-web
spec:replicas: 1selector:matchLabels:app: test-webtemplate:metadata:labels:app: test-webspec:containers:- name: test-webimage: registry-vpc.cn-shanghai.aliyuncs.com/prod-acr/test-web:${IMAGE-TAG}ports:- containerPort: 8080
#        resources:
#          limits:
#            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:name: test-webnamespace: prod labels:app: test-web
spec:selector:app: test-webports:- name: httpprotocol: TCPport: 80targetPort: 8080- name: httpsprotocol: TCPport: 443targetPort: 8080type: NodePort

05.在ACR中新建镜像仓库

在这里插入图片描述

新建流水线

在云效中新建流水线,如下图所示,主要有三个阶段,分别为拉取源代码(即配置代码仓库)、构建、部署
在这里插入图片描述
点击第一个阶段,如下图所示进行编辑代码源及拉取代码默认分支
在这里插入图片描述
点击【Node.js构建Docker镜像并推送镜像仓库】进行第二个阶段的编辑
在这里插入图片描述
如上图所示编写构建命令:

# input your command here
#cnpm install
npm install --registry=https://registry.npmmirror.com
npm run build

如下图所编辑镜像推送ACR的步骤
在这里插入图片描述
点击【Kubernetes 发布】进行最后一个阶段部署的操作

在这里插入图片描述
如上图所示,增加变量IMAGE-TAG用做上文中提到的拉取镜像的标签
其中选择集群连接时,可以按照下图所示进行操作

在这里插入图片描述

验证发布

点击【运行】,运行结果可通过如下图所示的流程图进行详细查看日志
在这里插入图片描述可以查看不同阶段的日志,如下图所示为构建阶段的日志:
在这里插入图片描述
如下图所示为部署阶段的日志:
在这里插入图片描述

http://www.lryc.cn/news/318896.html

相关文章:

  • Jmeter入参问题小记
  • 【四 (2)数据可视化之 Matplotlib 常用图表及代码实现 】
  • 官网建设的江湖四大流派,一派苦撑、一派完犊子、另外两派搅局。
  • Ubuntu 安装 KVM 虚拟化
  • SA3D:基于 NeRF 的三维场景分割方法
  • mysql实战开发之 mysql 删除一张表某个字段的sql语句
  • Selenium控制已运行的Edge和Chrome浏览器——在线控制 | 人机交互(详细启动步骤和bug记录)
  • 【Miniconda】Linux系统中 .condarc 配置文件的位置一般在哪里
  • 数据结构——动态顺序表
  • Android Studio实现内容丰富的安卓宠物医院管理系统
  • 华为OD机试真题-启动多任务排序-2024年OD统一考试(C卷)
  • 在没有推出硬盘的情况下,重启mac电脑,外接移动硬盘无法加载显示?
  • C++笔记:从零开始一步步手撕高阶数据结构AVL树
  • CodeSys通过C函数接口调用Qt
  • 线性代数笔记18--行列式公式、代数余子式
  • 最新2024年项目基金撰写与技巧及GPT融合应用
  • Java八股文(Element Plus)
  • 【Hadoop】Hadoop概述与核心组件
  • 3D地图在BI大屏中的应用实践
  • JavaScript 进阶(二)
  • 基于ssm+layui的图书管理系统
  • 2024年最新阿里云和腾讯云云服务器价格租用对比
  • 双指针算法_复写零
  • 自习室预订系统|基于springboot框架+ Mysql+Java+B/S架构的自习室预订系统设计与实现(可运行源码+数据库+设计文档+部署说明)
  • 基于Java+SpringMVC+vue+element宠物管理系统设计实现
  • 用miniconda建立PyTorch、Keras、TensorFlow三个环境
  • 【QT 5 +Linux下qt软件点击.sh脚本运行+Dconf编辑器+学习他人文章+番外篇:点击脚本运行软件】
  • 多模态大模型Claude 3正式接入集简云与语聚!对标GPT-4且支持中文
  • .NET后端返回File文件,及前端处理直接在浏览器下载
  • 如何压缩图片文件大小?教大家几种方法