赞
踩
需求:
公司有很多个项目,但是域名是一个,现在需要在域名后面根据项目名进行访问,
如 xielong-dev.work/rm/,xielong-dev.work/auth/
1、vue.config.js
- module.exports = {
- publicPath: '/rm/',
2、路由下 index.js
- const router = new VueRouter({
- base: '/rm/',
- })
3、 axios.js
baseURL: process.env.NODE_ENV === 'development' ? '/rm/api/'
3、VUE 项目中的通用 Dockerfile
- # 导入nginx镜像
- FROM nginx:1.15.1-alpine
-
- USER root
-
- # 把当打包复制到
- ADD ./dist /usr/share/nginx/html
-
- # 使用自定义nginx.conf
- COPY nginx.conf /etc/nginx/nginx.conf
-
- EXPOSE 80
- # RUN /bin/bash -c 'echo init ok!!!'
4、VUE 项目中的通用 nginx.conf
-
- # worker_processes : 定义了nginx对外提供web服务时的worder进程数,设置为“auto”将尝试自动检测它
- worker_processes auto;
-
- #pid /usr/local/nginx/logs/nginx.pid;
- #error_log /usr/local/nginx/logs/error.log crit;
-
- # worker_rlimit_nofile : 更改worker进程的最大打开文件数限制
- worker_rlimit_nofile 1000000;
-
- events {
- # worker_connections : 设置可由一个worker进程同时打开的最大连接数
- worker_connections 65536;
- # multi_accept : nginx收到一个新连接通知后接受儘可能多的连接
- multi_accept on;
- # use : 设置用于复用客户端线程的轮询方法
- use epoll;
- }
-
- http {
- include mime.types;
- default_type application/octet-stream;
-
- sendfile on;
- # tcp_nopush : 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
- tcp_nopush on;
- #
- tcp_nodelay on;
- # server_tokens : 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
- server_tokens off;
-
- # 给客户端分配keep-alive连结超时时间。伺服器将在这个超时时间过后关闭连结
- keepalive_timeout 10;
- # client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。
- client_header_timeout 10;
- client_body_timeout 10;
- # reset_timeout_connection告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
- reset_timedout_connection on;
- # send_timeout 指定客户端的响应超时时间。
- # 这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。
- send_timeout 10;
-
- limit_conn_zone $binary_remote_addr zone=addr:5m;
- limit_conn addr 100;
-
- gzip on;
- # gzip_disable为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
- gzip_disable "msie6";
- # gzip_static告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。
- gzip_static on;
- # gzip_proxied允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味著将会压缩所有的请求。
- gzip_proxied any;
- # gzip_min_length设置对数据启用压缩的最少字节数。
- # 如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
- gzip_min_length 1000;
- # gzip_comp_level设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。
- # 设置为4,这是一个比较折中的设置。
- gzip_comp_level 4;
- gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
-
- # open_file_cache打开缓存的同时也指定了缓存最大数目,以及缓存的时间。
- open_file_cache max=100000 inactive=20s;
- # open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。
- open_file_cache_valid 30s;
- # open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间裡最小的文件数。
- open_file_cache_min_uses 2;
- open_file_cache_errors on;
-
- # include /etc/nginx/conf.d/*.conf;
- # include /etc/nginx/sites-enabled/*;
-
- server {
- listen 80;
- # 接口服务的IP地址
- server_name localhost;
- charset utf-8;
- access_log off;
- # app-index.html页面所在文件夹
- root /usr/share/nginx/html;
- location / {
- index index.html index.htm;
- try_files $uri $uri/ /index.html;
- }
-
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- }
- }

5、Jenkins Pipeline 脚本
- node {
-
- def DockerRepo='10.3.0.193:5001'
- def RemoteHost='devops@10.3.0.196'
- def ServiceName='服务名'
-
- stage('Preparation') {
-
- git branch: 'develop', credentialsId: 'Gitlab-Credential-SSH', url: 'git地址'
-
- }
-
- stage('Build') {
-
- nvm('version':'v12.14.1') {
- //sh "npm install -g nrm --registry=http://registry.npm.taobao.org/"
- sh "npm install"
- sh "npm run buildDev"
- }
-
- sh "docker build -t ${DockerRepo}/${ServiceName} ."
- sh "docker push ${DockerRepo}/${ServiceName}"
- sh "docker rmi ${DockerRepo}/${ServiceName}"
-
- sh "docker image prune -f"
- }
-
- stage('Remote SSH') {
-
- sh "ssh ${RemoteHost} docker rm -f ${ServiceName} || true"
- sh "ssh ${RemoteHost} docker rmi ${DockerRepo}/${ServiceName} || true"
- sh "ssh ${RemoteHost} docker run \
- --restart=always \
- --name=${ServiceName} \
- -v /etc/localtime:/etc/localtime \
- -p 7000:80 \
- -m 1G \
- -d ${DockerRepo}/${ServiceName}"
- }
-
- }

目录如下
- ll /docker/nginx/
-
- drwxrwxrwx 2 root root 4096 Nov 26 2021 cert
- -rwxrwxrwx 1 kenny kenny 243 Jun 28 18:51 Dockerfile
- -rwxrwxrwx 1 kenny kenny 8058 Nov 3 10:59 nginx.conf
- -rwxrwxrwx 1 kenny kenny 338 Jun 15 2021 start.sh
1、Dockerfile
- FROM nginx:1.16-alpine
- ENTRYPOINT nginx -g "daemon off;"
2、Nginx.conf 配置
- server {
- listen 443 ssl;
- charset utf-8;
- underscores_in_headers on;
- server_name xielong-dev.work;
-
- ssl_certificate cert/xielong-dev.work.pem;
- ssl_certificate_key cert/xielong-dev.work.key;
- ssl_session_timeout 5m;
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_prefer_server_ciphers on;
-
- location /rm/ {
- proxy_set_header Host $host;
- proxy_pass http://10.3.0.196:7000/;
- }
-
- location /rm/api/ {
- add_header 'Access-Control-Allow-Origin' '*';
- add_header 'Access-Control-Allow-Methods' '*';
- add_header 'Access-Control-Allow-Headers' '*';
- client_max_body_size 35M;
- proxy_pass http://10.3.0.221:8600/api/;
- }
- }

3、启动脚本 start.sh
- #!/bin/bash
-
- DOCKERNAME="nginx"
-
- docker rm -f $DOCKERNAME || true
- docker build -t $DOCKERNAME .
-
- docker run --name $DOCKERNAME \
- -p 7222:7222 \
- -p 443:443 \
- -v /docker/$DOCKERNAME/nginx.conf:/etc/nginx/nginx.conf \
- -v /etc/localtime:/etc/localtime \
- -v /docker/$DOCKERNAME/cert:/etc/nginx/cert \
- -m 1G \
- -d $DOCKERNAME \
- --restart=always

三、服务器上面查看
- 883b268e1c0f nginx "/bin/sh -c 'nginx -…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 80/tcp, 0.0.0.0:7222->7222/tcp nginx
- 167ae70926a2 10.3.0.193:5001/rm-frontend-local:0.0.1 "nginx -g 'daemon of…" 23 hours ago Up 23 hours 0.0.0.0:7000->80/tcp rm-frontend-local
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。