Skip to content

@mgcloud/ikkyu-web

  • Next.js: 16.1.1
  • TypeScript: 5.9.3
  • Jenkins: build

项目介绍

aigc C端

说明

bash
# 克隆项目
git clone http://39.108.189.115:81/aigc-platform/frontend/ikkyu-web.git

# 进入项目目录
cd ikkyu-web

# 安装依赖
pnpm install

# 启动服务
pnpm run dev

发布

pnpm
bash
pnpm run build

Jenkins job

shell
#!/bin/bash

export NODEJS22_17_HOME=/opt/nodejs/node-v22.17.1
export PATH=$NODEJS22_17_HOME/bin:$PATH

node -v
pnpm -v

cp .env.test .env

pnpm install
pnpm run build || exit 1

cd out/
ls -l
rm -f html.tar
tar zcvf html.tar *
shell
#!/bin/bash

export NODEJS22_17_HOME=/opt/nodejs/node-v22.17.1
export PATH=$NODEJS22_17_HOME/bin:$PATH

node -v
pnpm -v

cp .env.production .env

pnpm install
pnpm run build || exit 1

# 定义变量
#镜像命名空间
images_ns="aigc"
project_name="ikkyu-web-ui-frontend"
jar_path="out" 

cp $WORKSPACE/docker/Dockerfile $WORKSPACE/$jar_path/
cp $WORKSPACE/docker/*.conf $WORKSPACE/$jar_path/

echo "###cd到项目文件夹"
cd $WORKSPACE/${jar_path}
echo $(pwd)

rm -f html.tar
tar zcvf html.tar * --exclude Dockerfile --exclude *.conf

echo "###打包镜像,用build_num作为版本号"
docker build -t images-hj-cn-beijing.cr.volces.com/${images_ns}/${project_name}:bid$BUILD_NUMBER .

echo "###上传镜像到阿里云容器仓库"
docker push images-hj-cn-beijing.cr.volces.com/${images_ns}/${project_name}:bid$BUILD_NUMBER

echo "###修改deploy镜像id"
sed -i "s/^.*image: images-hj-cn-beijing.cr.volces.com.*$/        image: images-hj-cn-beijing.cr.volces.com\/${images_ns}\/${project_name}:bid$BUILD_NUMBER/" /opt/k8s-deploy/${images_ns}/deploy_${project_name}.yml

echo "###k8s部署"
kubectl apply -f /opt/k8s-deploy/${images_ns}/deploy_${project_name}.yml

echo "### k8s部署检查"
kubectl rollout status deployments ${project_name}-deployment -n ${images_ns}
kubectl get  deployments ${project_name}-deployment -n ${images_ns}
shell
#!/bin/bash
docker login --username=广州三阳开泰科技短剧 --password=Images#2022 images-registry.cn-shenzhen.cr.aliyuncs.com
IMAGE_TAG="bid$BUILD_NUMBER"
VPC_REGISTRY="images-registry-vpc.cn-shenzhen.cr.aliyuncs.com"
PUBLIC_REGISTRY="images-registry.cn-shenzhen.cr.aliyuncs.com"

node -v
pnpm -v

echo "构建镜像..."
mv Dockerfile.test  Dockerfile
docker build  -t $VPC_REGISTRY/aigc/test-ikkyu-web-ui-frontend:$IMAGE_TAG .
docker push $VPC_REGISTRY/aigc/test-ikkyu-web-ui-frontend:$IMAGE_TAG

echo "部署到远程服务器..."
ssh aigc@115.190.63.16 << EOF
docker login --username=广州三阳开泰科技短剧 --password=Images#2022 images-registry.cn-shenzhen.cr.aliyuncs.com
set -e
echo "拉取镜像..."
docker pull $PUBLIC_REGISTRY/aigc/test-ikkyu-web-ui-frontend:$IMAGE_TAG

echo "重启容器..."
docker stop test-ikkyu-web-ui-frontend || true
docker rm test-ikkyu-web-ui-frontend || true

echo "启动新容器..."
docker run -d \
  --name test-ikkyu-web-ui-frontend \
  -p 3000:3000 \
  $PUBLIC_REGISTRY/aigc/test-ikkyu-web-ui-frontend:$IMAGE_TAG

echo "部署完成!"
EOF

Dockerfile

dockerfile
# Build stage
FROM images-registry-vpc.cn-shenzhen.cr.aliyuncs.com/weblogic/node:20-slim AS builder

RUN npm install -g pnpm

WORKDIR /app

COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

COPY . .
RUN rm -f .env.local .env.production .env.production.local

COPY .env.test .env
RUN pnpm run build

# Production stage
FROM images-registry-vpc.cn-shenzhen.cr.aliyuncs.com/weblogic/node:20-slim AS runner

RUN npm install -g pnpm

WORKDIR /app

ENV NODE_ENV=production
ENV HOST=0.0.0.0

EXPOSE 3000

COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/node_modules ./node_modules

CMD ["pnpm", "start"]
dockerfile
# Build stage
FROM images-registry-vpc.cn-shenzhen.cr.aliyuncs.com/weblogic/node:20-slim AS builder

RUN npm install -g pnpm

WORKDIR /app

COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm run build

# Production stage
FROM images-registry-vpc.cn-shenzhen.cr.aliyuncs.com/weblogic/node:20-slim AS runner

RUN npm install -g pnpm

WORKDIR /app

ENV NODE_ENV=production
ENV HOST=0.0.0.0

EXPOSE 3000

COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/node_modules ./node_modules

CMD ["pnpm", "start"]