chore: add docker deployment files and scripts

This commit is contained in:
Ding Shuo
2026-03-15 12:19:47 +08:00
parent 43f7cca0c2
commit ccfba711e7
3 changed files with 98 additions and 0 deletions

24
Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
# Stage 1: Build
FROM node:20-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Stage 2: Serve with Nginx
FROM nginx:alpine
# Copy build output to nginx folder
COPY --from=build /app/dist /usr/share/nginx/html
# Custom nginx config to handle SPA routing if needed
RUN echo 'server { \
listen 80; \
location / { \
root /usr/share/nginx/html; \
index index.html; \
try_files $uri $uri/ /index.html; \
} \
}' > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

29
build_and_push.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Configuration
REGISTRY="dcr-by1jwyxk44.71826370.xyz"
IMAGE_NAME="safe-os-ui"
TAG="latest"
FULL_IMAGE_NAME="$REGISTRY/$IMAGE_NAME:$TAG"
echo "Step 1: Building Docker image..."
docker build -t $IMAGE_NAME:$TAG .
if [ $? -ne 0 ]; then
echo "Error: Docker build failed."
exit 1
fi
echo "Step 2: Tagging image for registry..."
docker tag $IMAGE_NAME:$TAG $FULL_IMAGE_NAME
echo "Step 3: Pushing image to $REGISTRY..."
# Note: You might need to run 'docker login $REGISTRY' beforehand
docker push $FULL_IMAGE_NAME
if [ $? -eq 0 ]; then
echo "Success: Image has been pushed to $FULL_IMAGE_NAME"
else
echo "Error: Docker push failed."
exit 1
fi

45
deploy/docker-compose.yml Normal file
View File

@@ -0,0 +1,45 @@
version: '3.8'
services:
# Frontend Service
safe-os-ui:
image: dcr-by1jwyxk44.71826370.xyz/safe-os-ui:latest
container_name: safe-os-ui
restart: always
networks:
- npm_network
# Backend: Planning Agent
planning-agent:
image: dcr-by1jwyxk44.71826370.xyz/planning-agent:latest
container_name: planning-agent
restart: always
environment:
- PORT=8090
networks:
- npm_network
# Backend: DevOps Agent
devops-agent:
image: dcr-by1jwyxk44.71826370.xyz/devops-agent:latest
container_name: devops-agent
restart: always
environment:
- PORT=8000
networks:
- npm_network
# Backend: Quality Gate
quality-gate:
image: dcr-by1jwyxk44.71826370.xyz/quality-gate:latest
container_name: quality-gate
restart: always
environment:
- PORT=5000
networks:
- npm_network
networks:
npm_network:
external: true
name: proxy-net # 已更新为实际的 Docker 网络名称