diff --git a/we-bank-site/Dockerfile b/we-bank-site/Dockerfile new file mode 100644 index 0000000..0d42fab --- /dev/null +++ b/we-bank-site/Dockerfile @@ -0,0 +1,17 @@ +FROM nginx:1.27-alpine + +ARG BUILD_DATE +ARG VCS_REF + +LABEL org.opencontainers.image.title="we-bank-site-demo" \ + org.opencontainers.image.description="Static corporate site template (demo)" \ + org.opencontainers.image.vendor="demo" \ + org.opencontainers.image.created=$BUILD_DATE \ + org.opencontainers.image.revision=$VCS_REF + +COPY nginx/default.conf /etc/nginx/conf.d/default.conf +COPY public /usr/share/nginx/html + +EXPOSE 80 +HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://127.0.0.1/ | grep -qi "" || exit 1 + diff --git a/we-bank-site/README.md b/we-bank-site/README.md new file mode 100644 index 0000000..471a1fb --- /dev/null +++ b/we-bank-site/README.md @@ -0,0 +1,84 @@ +# 演示银行官网模板(部署到阿里云) + +> 免责声明:本仓库仅为静态企业官网演示模板,与任何真实银行或机构无关,不提供任何真实金融服务。 + +## 目录结构 + +``` +/we-bank-site +├─ public/ # 静态页面与资源 +│ ├─ index.html +│ ├─ about.html products.html news.html careers.html contact.html +│ └─ assets/ +│ ├─ css/styles.css +│ ├─ js/main.js +│ └─ img/logo.svg +├─ nginx/default.conf # Nginx 静态站点配置 +├─ Dockerfile # 生产镜像 +├─ docker-compose.yml # 本地启动 +└─ scripts/ + ├─ deploy-oss.sh # 部署到 OSS(静态托管/CDN) + └─ deploy-ecs.sh # 部署到 ECS(Docker/Nginx) +``` + +## 本地运行 + +```bash +cd /workspace/we-bank-site +docker compose up --build -d +# 访问 http://localhost:8080 +``` + +## 方案一:部署到阿里云 OSS(静态托管 + 可选 CDN) + +适合纯静态网站,成本低、维护简单。 + +### 前置条件 +- 已创建阿里云账号并开通 OSS +- 安装并配置 aliyun CLI:`aliyun configure` +- 已创建 Bucket(公共读或绑定 CDN) + +### 一键部署 +```bash +cd /workspace/we-bank-site +export OSS_BUCKET=你的Bucket名 +export OSS_REGION=cn-hangzhou # 按你的地域填写 +export OSS_PREFIX=we-bank-site # 可选:上传到该目录前缀 +bash scripts/deploy-oss.sh +``` +完成后: +- 直接用 `https://..aliyuncs.com//index.html` 访问,或 +- 绑定自定义域名 + CDN 加速 + HTTPS 证书(推荐) + +## 方案二:部署到阿里云 ECS(Docker 容器) + +适合需要自定义 Nginx、未来扩展到后端服务的场景。 + +### 前置条件 +- 一台可用的 ECS(建议安全组放行 80/443) +- ECS 上已安装 Docker(或使用 Docker 一键安装脚本) +- 可 SSH 访问 ECS + +### 一键部署 +```bash +cd /workspace/we-bank-site +export ECS_HOST=你的ECS公网IP +export ECS_USER=root # 如不同请修改 +export SSH_KEY=$HOME/.ssh/id_rsa # 私钥路径 +export APP_NAME=we-bank-site-demo # 可自定义 +export REMOTE_PORT=80 # 可改 80/8080 等 +bash scripts/deploy-ecs.sh +``` +完成后访问:`http://:` + +### HTTPS(可选) +- 在 ECS 上使用 Nginx 反向代理 + 证书(如 `certbot`/阿里云证书服务),将 443 代理到容器 80 +- 或使用 SLB/ALB + 证书,监听 443 并转发到容器 80 + +## 自定义与注意事项 +- 本模板所有文案仅为示例,部署到公网前请替换品牌、文案与法律合规页。 +- 如果使用 OSS 静态托管,注意合理设置缓存策略与 CDN 回源配置。 +- 如需多环境(dev/stage/prod),可分不同 Bucket/路径或不同 ECS。 + +## 版权与许可 +- 本模板仅用于演示与学习,不得用于冒用真实机构、误导用户或从事任何违法违规行为。 \ No newline at end of file diff --git a/we-bank-site/docker-compose.yml b/we-bank-site/docker-compose.yml new file mode 100644 index 0000000..722fa8b --- /dev/null +++ b/we-bank-site/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.9' +services: + web: + image: we-bank-site-demo:latest + build: + context: . + dockerfile: Dockerfile + ports: + - "8080:80" + restart: unless-stopped + diff --git a/we-bank-site/nginx/default.conf b/we-bank-site/nginx/default.conf new file mode 100644 index 0000000..f9ce4d9 --- /dev/null +++ b/we-bank-site/nginx/default.conf @@ -0,0 +1,28 @@ +server { + listen 80; + server_name _; + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log warn; + + gzip on; + gzip_types text/plain text/css application/javascript application/json image/svg+xml; + gzip_min_length 1024; + + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options SAMEORIGIN; + add_header Referrer-Policy no-referrer-when-downgrade; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ =404; + } + + location ~* \.(?:css|js|jpg|jpeg|png|gif|svg|ico|woff2?)$ { + expires 30d; + access_log off; + } +} + diff --git a/we-bank-site/public/about.html b/we-bank-site/public/about.html new file mode 100644 index 0000000..0ce7de5 --- /dev/null +++ b/we-bank-site/public/about.html @@ -0,0 +1,57 @@ + + + + + + 关于我们 · 演示模板 + + + + + + +
+

关于我们(演示)

+

本页面为演示模板内容,不代表任何真实机构。

+
+
+

愿景

+

以科技驱动金融普惠,共创开放、可信的数字经济。

+
+
+

使命

+

提供安全与便捷兼具的产品体验,助力个人与企业成长。

+
+
+

价值观

+

合规、创新、客户为先、长期主义。

+
+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/public/assets/css/styles.css b/we-bank-site/public/assets/css/styles.css new file mode 100644 index 0000000..2723fc6 --- /dev/null +++ b/we-bank-site/public/assets/css/styles.css @@ -0,0 +1,48 @@ +:root{--bg:#0b1020;--card:#111732;--muted:#8a93a6;--text:#e7ecf7;--brand:#3b82f6;--brand-700:#1d4ed8;--accent:#22c55e;--border:#1e263f;--white:#ffffff} +*{box-sizing:border-box} +html,body{padding:0;margin:0} +body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,Segoe UI Emoji,Segoe UI Symbol;line-height:1.6;background:var(--bg);color:var(--text)} +a{color:inherit;text-decoration:none} +img{display:block;max-width:100%} + +.container{width:100%;max-width:1120px;margin:0 auto;padding:0 16px} + +.site-header{position:sticky;top:0;background:rgba(11,16,32,.9);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--border);z-index:10} +.header-inner{display:flex;align-items:center;justify-content:space-between;height:64px} +.brand{display:flex;gap:10px;align-items:center;font-weight:700} +.brand span{letter-spacing:.5px} +.nav-toggle{display:none;background:transparent;border:0;color:var(--text);font-size:24px} +.site-nav{display:flex;gap:18px;align-items:center} +.site-nav a{padding:8px 10px;color:var(--muted)} +.site-nav a:hover{color:var(--white)} +.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:10px;border:1px solid var(--border);background:#0e1429;color:var(--text)} +.btn:hover{border-color:#2a3863} +.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--white)} +.btn-primary:hover{background:var(--brand-700);border-color:var(--brand-700)} + +.hero{padding:72px 0;background:radial-gradient(60% 120% at 50% -10%, #1b254d 0%, rgba(27,37,77,0) 60%), linear-gradient(180deg, rgba(59,130,246,.18), transparent)} +.hero-inner{display:flex;flex-direction:column;gap:16px;align-items:flex-start} +.hero h1{font-size:42px;line-height:1.2;margin:0} +.hero p{max-width:680px;color:var(--muted);margin:0} +.hero-cta{display:flex;gap:12px;margin-top:8px} + +.features{padding:48px 0} +.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} +.card{border:1px solid var(--border);background:var(--card);border-radius:14px;padding:18px} +.card h3{margin:0 0 8px 0} +.card p{margin:0;color:var(--muted)} + +.highlight{padding:24px 0;border-top:1px solid var(--border);background:linear-gradient(180deg, rgba(34,197,94,.08), transparent)} +.highlight h2{margin:0 0 8px} +.list{margin:0;padding-left:18px} + +.site-footer{padding:24px 0;border-top:1px solid var(--border);color:var(--muted)} +.footer-inner{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap} + +@media (max-width: 768px){ + .grid-3{grid-template-columns:1fr} + .nav-toggle{display:block} + .site-nav{position:absolute;inset:64px 0 auto 0;background:rgba(11,16,32,.98);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:0;padding:8px 16px;display:none} + .site-nav.open{display:flex} +} + diff --git a/we-bank-site/public/assets/img/logo.svg b/we-bank-site/public/assets/img/logo.svg new file mode 100644 index 0000000..8efd50d --- /dev/null +++ b/we-bank-site/public/assets/img/logo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/we-bank-site/public/assets/js/main.js b/we-bank-site/public/assets/js/main.js new file mode 100644 index 0000000..8320e6d --- /dev/null +++ b/we-bank-site/public/assets/js/main.js @@ -0,0 +1,10 @@ +(() => { + const toggleButton = document.querySelector('.nav-toggle'); + const nav = document.querySelector('.site-nav'); + if (!toggleButton || !nav) return; + toggleButton.addEventListener('click', () => { + const isOpen = nav.classList.toggle('open'); + toggleButton.setAttribute('aria-expanded', String(isOpen)); + }); +})(); + diff --git a/we-bank-site/public/careers.html b/we-bank-site/public/careers.html new file mode 100644 index 0000000..d0efef2 --- /dev/null +++ b/we-bank-site/public/careers.html @@ -0,0 +1,46 @@ + + + + + + 加入我们 · 演示模板 + + + + + + +
+

加入我们(示例)

+
+

示例岗位 · 前端工程师

+

负责企业官网与后台管理系统的开发与优化。

+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/public/contact.html b/we-bank-site/public/contact.html new file mode 100644 index 0000000..920e010 --- /dev/null +++ b/we-bank-site/public/contact.html @@ -0,0 +1,53 @@ + + + + + + 联系我们 · 演示模板 + + + + + + +
+

联系我们(示例)

+
+

本页面为演示用途。请勿填写真实敏感信息。

+
+
+ + + + +
+
+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/public/index.html b/we-bank-site/public/index.html new file mode 100644 index 0000000..36ff6b5 --- /dev/null +++ b/we-bank-site/public/index.html @@ -0,0 +1,82 @@ + + + + + + 微众银行(演示模板) + + + + + + + +
+
+
+

面向未来的数字银行(演示模板)

+

安全、普惠、便捷。以下页面与内容均为演示用途,不代表任何真实机构或观点。

+ +
+
+ +
+
+
+

普惠金融

+

以科技推动普惠,为更多个人与小微企业提供可负担的金融服务。

+
+
+

安全可靠

+

多层防护与合规基线,从数据到业务全链路守护。

+
+
+

开放协同

+

与生态伙伴共建开放平台,提升服务的广度与深度。

+
+
+
+ +
+
+

热门产品(示例)

+
    +
  • 智慧存款 · 灵活便捷
  • +
  • 小微贷款 · 高效审批
  • +
  • 开放平台 · API 接入
  • +
+
+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/public/news.html b/we-bank-site/public/news.html new file mode 100644 index 0000000..b7905c2 --- /dev/null +++ b/we-bank-site/public/news.html @@ -0,0 +1,47 @@ + + + + + + 新闻资讯 · 演示模板 + + + + + + +
+

新闻资讯(示例)

+
+

示例新闻标题

+

2025-09-16

+

此处为新闻内容示例,用于演示页面布局与样式。

+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/public/products.html b/we-bank-site/public/products.html new file mode 100644 index 0000000..d5ac707 --- /dev/null +++ b/we-bank-site/public/products.html @@ -0,0 +1,56 @@ + + + + + + 产品与服务 · 演示模板 + + + + + + +
+

产品与服务(示例)

+
+
+

智慧存款

+

灵活期限、便捷管理。

+
+
+

小微贷款

+

流程高效、服务普惠。

+
+
+

开放平台

+

标准化 API 接入,生态协作。

+
+
+
+ +
+ +
+ + + + + diff --git a/we-bank-site/scripts/deploy-ecs.sh b/we-bank-site/scripts/deploy-ecs.sh new file mode 100755 index 0000000..bdc0143 --- /dev/null +++ b/we-bank-site/scripts/deploy-ecs.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Build and deploy the Dockerized site to an Alibaba Cloud ECS instance via SSH. +# Requirements: +# - Docker installed locally +# - SSH access to ECS with sudo docker permissions +# - ENV VARS: ECS_HOST, ECS_USER, SSH_KEY, APP_NAME (default: we-bank-site-demo) + +APP_NAME=${APP_NAME:-we-bank-site-demo} +ECS_HOST=${ECS_HOST:-} +ECS_USER=${ECS_USER:-root} +SSH_KEY=${SSH_KEY:-"$HOME/.ssh/id_rsa"} +REMOTE_PORT=${REMOTE_PORT:-80} + +if [[ -z "$ECS_HOST" ]]; then + echo "Please export ECS_HOST, e.g.: export ECS_HOST=xx.xx.xx.xx" >&2 + exit 2 +fi + +echo "Building Docker image..." +docker build -t ${APP_NAME}:latest . + +echo "Saving image as tar..." +TMP_TAR=$(mktemp /tmp/${APP_NAME}.XXXXXX.tar) +docker save ${APP_NAME}:latest -o "$TMP_TAR" + +echo "Copying image to ECS..." +scp -i "$SSH_KEY" -o StrictHostKeyChecking=no "$TMP_TAR" ${ECS_USER}@${ECS_HOST}:/tmp/${APP_NAME}.tar +rm -f "$TMP_TAR" + +echo "Loading and running container on ECS..." +ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no ${ECS_USER}@${ECS_HOST} "\ + docker load -i /tmp/${APP_NAME}.tar && \ + docker rm -f ${APP_NAME} 2>/dev/null || true && \ + docker run -d --name ${APP_NAME} --restart unless-stopped -p ${REMOTE_PORT}:80 ${APP_NAME}:latest && \ + rm -f /tmp/${APP_NAME}.tar && \ + docker images prune -f && docker container prune -f +" + +echo "Deployment completed. Visit: http://${ECS_HOST}:${REMOTE_PORT}" + diff --git a/we-bank-site/scripts/deploy-oss.sh b/we-bank-site/scripts/deploy-oss.sh new file mode 100755 index 0000000..028f23e --- /dev/null +++ b/we-bank-site/scripts/deploy-oss.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Deploy static site to Alibaba Cloud OSS +# Requirements: +# - aliyun CLI installed and configured: `aliyun configure` +# - OSS bucket exists with public read or behind CDN +# - ENV VARS: OSS_BUCKET, OSS_REGION (e.g. cn-hangzhou), OPTIONAL: OSS_PREFIX + +if ! command -v aliyun >/dev/null 2>&1; then + echo "aliyun CLI not found. Install: https://help.aliyun.com/zh/cli/" >&2 + exit 1 +fi + +OSS_BUCKET=${OSS_BUCKET:-} +OSS_REGION=${OSS_REGION:-} +OSS_PREFIX=${OSS_PREFIX:-} +SRC_DIR="$(cd "$(dirname "$0")/.." && pwd)/public" + +if [[ -z "$OSS_BUCKET" || -z "$OSS_REGION" ]]; then + echo "Please export OSS_BUCKET and OSS_REGION, e.g.:" >&2 + echo " export OSS_BUCKET=your-bucket-name" >&2 + echo " export OSS_REGION=cn-hangzhou" >&2 + exit 2 +fi + +echo "Uploading $SRC_DIR to oss://$OSS_BUCKET/${OSS_PREFIX}" + +# Ensure bucket exists +aliyun oss HeadBucket --bucket-name "$OSS_BUCKET" --region "$OSS_REGION" >/dev/null 2>&1 || { + echo "Bucket $OSS_BUCKET not found in $OSS_REGION" >&2 + exit 3 +} + +# Sync files +aliyun oss cp "${SRC_DIR}" "oss://${OSS_BUCKET}/${OSS_PREFIX}" --recursive --region "$OSS_REGION" --force + +echo "Setting cache headers for static assets..." +aliyun oss set-object-meta --region "$OSS_REGION" \ + --bucket-name "$OSS_BUCKET" \ + --object-name "${OSS_PREFIX%/}/assets/" \ + --headers '{"Cache-Control":"public, max-age=2592000"}' || true + +echo "Done. Consider binding CDN to OSS for best performance." +