Vue创建
大致步骤:
- 前端Vue项目打包
- 创建Nginx配置文件
- 创建Dockerfile
- 复制文件到Linux系统
- 构建Docker镜像
- 创建容器
前端Vue项目打包
用指令 npm run build
或者yarn run build
打包vusjs项目,打包成功后会在项目下生成一个dist文件夹,该文件夹下的文件就是前端要部署的文件
Nginx的配置文件
新建一个叫nginx.conf的Nginx项目配置文件,具体内容如下:
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://192.168.1.11:8080/api;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
解決history模式下路由问题
try_files $uri $uri/ /index.html
一定要写,不然部署项目后刷新后变成404。在路由启用history模式并且重新打包以后,打开浏览器发现页面url中的#号已经没有了,这时我们随便进一个子路由刷新一下页面会出现404。location /api
一定不要写成 location /api/
区别就是多了一个/但是效果不一样,在末尾加一个/会发现axios请求一次,但是nginx有两个请求,其中第二个还会把post请求的参数丢失。
Dockerfile
FROM nginx:alpine
##FROM nginx:1.17.4
# 定义作者
MAINTAINER DZero
COPY dist /usr/share/nginx/html
#删除原有的默认配置
RUN rm /etc/nginx/conf.d/default.conf
#使用自定义nginx.conf配置端口和监听
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 8080
构建Docker镜像
## 注意最后的 .
docker build -t 192.168.1.10/demo/nginx-vue:V1.0.0 .
docker login 192.168.1.10 -u **** -p ********
docker push 192.168.1.10/demo/nginx-vue:V1.0.0
创建容器
docker run -d -p 8081:8080 --name nginxvue demo/nginx-vue:V1.0.0
docker logs nginx-vue
注意项
nginx的配置一定要正确,还要记得删除原nginx的在conf.d或者sites_enabled里面的默认配置,以免出什么幺蛾子。有时候把配置build到docker镜像里面比较费时间,仅仅是为了验证nginx配置是否正确,这个时候可以通过挂载的方式验证配置,等nginx跑通了,再把nginx配置build到镜像里面。