feat: 修改部署方式
This commit is contained in:
21
scripts/Dockerfile
Normal file
21
scripts/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM alpine:3.22 AS base
|
||||
WORKDIR /app
|
||||
|
||||
RUN apk add --no-cache --update nodejs pnpm
|
||||
|
||||
FROM base AS install
|
||||
ENV NODE_ENV=production
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
RUN pnpm install
|
||||
|
||||
FROM install AS build
|
||||
COPY . .
|
||||
RUN pnpm build
|
||||
|
||||
FROM base
|
||||
COPY --from=install /app/node_modules ./node_modules
|
||||
COPY --from=build /app/dist ./dist
|
||||
ENV HOST=0.0.0.0
|
||||
ENV PORT=4321
|
||||
EXPOSE 4321
|
||||
CMD ["node", "./dist/server/entry.mjs"]
|
||||
@@ -1,30 +1,28 @@
|
||||
#!/bin/bash
|
||||
# 严格模式
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT=$(cd -- "$(dirname "${BASH_SOURCE[0]}")/.." &> /dev/null && pwd)
|
||||
REMOTE_SERVER="02"
|
||||
REMOTE_DIR="/srv/docker/nginx/www/blog"
|
||||
DOCKERFILE_PATH=./scripts/Dockerfile
|
||||
IMAGE_NAME=blog
|
||||
IMAGE_FILE_NAME=$IMAGE_NAME.tar.gz
|
||||
REMOTE_SERVER=02
|
||||
REMOTE_PATH=/srv/docker/nginx/www
|
||||
DOCKER_NETWORK=docker_app-bridge
|
||||
|
||||
cd "${PROJECT_ROOT}"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
pnpm run build
|
||||
docker build -f $DOCKERFILE_PATH --platform linux/amd64 -t $IMAGE_NAME .
|
||||
|
||||
tar -czf dist.tar.gz ./dist >/dev/null 2>&1
|
||||
docker save $IMAGE_NAME | gzip > $IMAGE_FILE_NAME
|
||||
|
||||
scp dist.tar.gz "${REMOTE_SERVER}:${REMOTE_DIR}"
|
||||
|
||||
ssh "$REMOTE_SERVER" bash -s -- "${REMOTE_DIR}" << 'EOF'
|
||||
REMOTE_DIR="$1"
|
||||
scp $IMAGE_FILE_NAME $REMOTE_SERVER:$REMOTE_PATH
|
||||
|
||||
ssh $REMOTE_SERVER bash << EOF
|
||||
set -euo pipefail
|
||||
|
||||
cd "${REMOTE_DIR}"
|
||||
rm -rf dist
|
||||
tar -xzf dist.tar.gz
|
||||
rm dist.tar.gz
|
||||
cd $REMOTE_PATH
|
||||
docker load -i $IMAGE_FILE_NAME
|
||||
docker rm -f $IMAGE_NAME || true
|
||||
docker run -d --name $IMAGE_NAME --network $DOCKER_NETWORK $IMAGE_NAME
|
||||
EOF
|
||||
|
||||
rm -rf dist
|
||||
rm -f dist.tar.gz
|
||||
echo "部署完成"
|
||||
rm -f $IMAGE_FILE_NAME
|
||||
|
||||
Reference in New Issue
Block a user