1.nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# include /etc/nginx/conf.d/*.conf;
upstream backupUrl {
server 192.168.64.129:8080 weight=1 max_fails=2 fail_timeout=10s;
}
server {
listen 80;
charset utf-8;
# 服务器地址或绑定域名
server_name 192.168.64.129;
# start ---------------------------------------------------------------------------------------------
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://192.168.64.129:8080/;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header REMOTE-HOST $remote_addr;
#add_header X-Cache $upstream_cache_status;
#add_header Cache-Control no-cache;
}
# end ---------------------------------------------------------------------------------------------
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
2.Dockerfile
FROM nginx:latest RUN rm /etc/nginx/conf.d/default.conf RUN rm /etc/nginx/nginx.conf COPY ./nginx/nginx.conf /etc/nginx/ COPY ./dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
3.[.drone.yml]
kind: pipeline # 定义一个管道
type: docker # 定义管道类型
name: deployment # 定义管道名称
steps: # 定义流水线执行步骤,这些步骤将顺序执行
- name: build-project # 流水线名称
image: node:latest # 定义创建容器的Docker镜像
volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
- name: node_modules # 数据卷名称
path: /drone/src/Web/node_modules # 容器内的绝对路径
- name: node_build
path: /drone/src/build
commands:
- rm -rf ./build/*
- mkdir -p ./build/nginx
- cd ./Web
- export NODE_OPTIONS="--max-old-space-size=8192"
- npm config set registry https://registry.npmmirror.com
- npm install
- npm run build
- cp /drone/src/Dockerfile /drone/src/build
- cp /drone/src/nginx.conf /drone/src/build/nginx/
- cp -r ./dist /drone/src/build/dist
- echo project build success
- name: build-docker
image: plugins/docker
privileged: true
settings:
context: /drone/src/build
dockerfile: /drone/src/build/Dockerfile
commands:
- cd /drone/src/build
- docker build -t fanqi/coreqi-web:latest .
- docker stop coreqi-web && docker rm coreqi-web
- docker run -d -p 10010:80 --name coreqi-web fanqi/coreqi-web:latest
volumes:
- name: node_build
path: /drone/src/build
- name: dockersock
path: /var/run/docker.sock
# 声明宿主机 映射到 drone执行器的数据卷,用于共享数据
volumes:
- name: node_modules
host:
path: /mnt/drone/node/node_modules # 宿主机的绝对路径
- name: node_build
host:
path: /mnt/node
- name: dockersock
host:
path: /var/run/docker.sock
# 可限制哪些分支可以推送自动CICD
trigger:
branch:
- main
