我总结了以下两种方法可用

一、通过制作镜像,使用镜像生成docker   这个是比较常用的方法,制作镜像(images)后,如果还要生成docker可以直接使用镜像比较方便以下是操作步骤

  1.创建目录 分别对应网站文件目录,日志目录,和配置文件目录

mkdir -p /home/OnlineBusiness/nginx_admin_docker/www /home/OnlineBusiness/nginx_admin_docker/logs /home/OnlineBusiness/nginx_admin_docker/conf.d 

  2.使用npm run build发布vue项目,并且上传到创建的文件目录,并且修改好nginx的配置文件conf.d目录下面的default.conf并且上传到conf.d目录,每个人的配置可能都不一样,以下是我的配置文件

server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
client_max_body_size 200m;
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
break;
}
# To allow POST on static pages
error_page 404 /index.html;
error_page 405 =200 $uri;
# error_page 405 200 $uri;
} location ~ /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://172.16.19.155:8004;
}
location ~ /admin/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/(.*)$ /$1 break;
proxy_pass http://172.16.19.155:8030;
}
location ~ /WebApi/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/(.*)$ /$1 break;
proxy_pass http://172.16.19.155:8030;
}
#access_log /var/log/nginx/host.access.log main;
}

  3.编写dockerfile文件,说明:第一行:指定nginx的镜像来源,第二行:指定作者,第三行:删除默认的配置文件,第四行 添加本地的配置文件,第五行 复制项目文件到nginx目录
dockerfile文件不能带扩展名,放在根目录里面(我这里就是放在/home/OnlineBusiness目录下面)

FROM nginx

MAINTAINER rxyhj
RUN rm /etc/nginx/conf.d/default.conf
ADD conf.d/default.conf /etc/nginx/conf.d/
COPY www/ /usr/share/nginx/html/

  4.创建镜像文件,在命令行下面,切换到dockerfile所在的文件夹,使用以下命令创建镜像文件,后面的.不能忘记,表示dockerfile文件夹在当前目录

docker build -t 镜像名称:版本号 .

  5. 使用镜像文件创建并启动容器,其中8002是本机使用的端口号,80是容器的端口,执行完命令后可使用本地IP加端口号访问

docker run --name=容器名称 -p 8002:80 -d 镜像名称:版本号 .

二、通过命令行的方法发布,该方法稍微麻烦一点,如果只发布一次可以使用该方法,操作步骤如下

  1.新建一个默认的nginxdocker,其中nginx是本地已有的nginx文件,如果没有要先创建

docker run -id --name --restart=always -e TZ=Asia/Shanghai -d nginx -p 80:80 nginx

  2.创建目录 分别对应网站文件目录,日志目录,和配置文件目录

mkdir -p /home/OnlineBusiness/nginx_admin_docker/www /home/OnlineBusiness/nginx_admin_docker/logs /home/OnlineBusiness/nginx_admin_docker/conf.d /home/OnlineBusiness/nginx_admin_docker/conf

  3.复制默认nginx默认配置文件到配置文件目录,其中 de3bd9fcb694 是默认nginxdocker的容器Id,可以通过dokcer ps查看

docker cp de3bd9fcb694:/etc/nginx/nginx.conf /home/OnlineBusiness/nginx_test/conf
docker cp de3bd9fcb694:/etc/nginx/conf.d /home/OnlineBusiness/nginx_test/

  4.停止默认配置nginx docker 其中 de3bd9fcb694 是默认nginxdocker的容器Id

docker stop de3bd9fcb694

  5.删除默认配置 其中 de3bd9fcb694 是默认nginxdocker的容器Id

docker rm de3bd9fcb694

  6.将发布后的vue项目上传到创建的网站文件目录,修改配置文件,如果有默认的配置文件,前面1,3,4,5步可以不需要,直接将配置文件复制到配置文件夹中即可
  7.重新创建容器,并且指定容器的文件目录,日志目录、配置文件目录与本地的目录映射,映射后如果修改了本地对应目录的文件,重启容器后会同步过去

docker run -d -p 8200:80 --name shoppc --restart=always -e TZ=Asia/Shanghai -d -v /home/OnlineBusiness/nginx_admin_docker/www:/usr/share/nginx/html -v /home/OnlineBusiness/nginx_admin_docker/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/OnlineBusiness/nginx_admin_docker/conf.d:/etc/nginx/conf.d -v /home/OnlineBusiness/nginx_admin_docker/logs:/var/log/nginx nginx

  8.启动容器  shoppc为容器名称,也可以使用Id

docker start shoppc

  9.修改nginx映射配置 -it参数表示分配一个伪终端 shoppc为容器名称 /bin/bash表示对容器执行bash操作,也可以在本地目录修改配置文件,然后重启容器也可以生效

    1). docker exec -it shoppc /bin/bash // 进入容器内部
    2). vim /etc/nginx/conf.d/default.conf // 修改nginx配置文件(如果vim命令不可用则需要安装执行以下命令安装 apt-get update (更新安装包源,否则可能无法运行vim的安装语句),apt-get install vim 安装vim)

以上方法和步骤都经过亲自动手实践是可以走得通的,在此记录下来,以免以后不记得了

vue项目发布到docker nginx的方法总结的更多相关文章

  1. linux vue项目+npm run build + nginx

    系统 环境 vue   nginx 步骤 1.打包vue项目 2.配置nginx 打包vue项目 1.项目配置   我们使用服务器的8000端口 2.打包 # npm run build 打包成功会创 ...

  2. 使用jib-maven-plugin将Spring Boot项目发布为Docker镜像

    目录 介绍 使用 总结 介绍 将spring boot(cloud)项目发布到docker环境作为镜像,一般常用的一个是com.spotify的docker-maven-plugin这个maven插件 ...

  3. vue项目部署到docker中

    通过nginx镜像部署 vue项目npm run build打包成dist目录,有的打包会加上版本号 启动 docker 将dist目录通过xftp拷贝到linux服务器上,同目录下新建Dockerf ...

  4. 解决Vue项目打包之后放到nginx下刷新就报错404的问题

    最近跟着某机构的教学视频敲了一遍vue项目,但是在windows环境下部署的时候就懵逼了放到nginx下正常跑没问题,但是刷新之后就报404错误 前端项目构建vue 脚手架版本 是@vue/cli 4 ...

  5. vue项目打包部署到nginx 服务器上

    假如要实现的效果如下 http://ip/vue    =>是进入首页访问的路径是  usr/local/nginx/html/vue http://ip/website     =>是进 ...

  6. vue项目发布后带路径打开页面报404问题

    环境: 后端,python+uwsgi启动 前端:vue  用nginx运行,指定静态目录 问题 :发布后带路径打开页面报404问题,带路径打开即不是打开的主页 解决方案: https://route ...

  7. Vue项目发布的问题--http://localhost:8088/static/fonts/fontawesome-webfont.af7ae50.woff2

    问题:ngnix将8080转成80对外访问,找不对woff2等文件 一\ 搭建环境 ngnix-->conf中 server { listen 80; server_name 10.9.240. ...

  8. 在vue项目中MD5加密的使用方法

    1:安装 npm install --save js-md5 2.引入及使用 方法一:在需要的项目文件中引入 import md5 from 'js-md5'; 使用例子:md5('hello wor ...

  9. vue项目用nodejs实现模拟数据方法

    1)在项目根目录(如demo)中创建一个文件夹,如base,将项目中所有的前端文件全部放到base文件夹中,此时项目demo下只有一个文件夹base 2)通过cmd进入命令窗口,直接执行npm ins ...

  10. axios在vue项目中的一种封装方法

    记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...

随机推荐

  1. jdbcTemplate之“rowMapper内部类写法”

    jdbcTemplate的rowMapper内部类写法 String sql ="select sku,feature from product"List<Product&g ...

  2. k8s资源清单创建pod

    资源:对象 service pod deployment workload:pod,ReplicaSet,Deployment,statefulset,DaemonSet,Job,Crontabjob ...

  3. vue3 基础-全局组件和局部组件

    组件和页面的关系可以理解为, 组件是页面的一部分. 形象地理解组件 就和盖房子一样的, 可以将房子粗略拆分3个组件(组成部分) 房顶, 房身, 地基. 同时房顶又可以拆分 ..... 这样在极限的情况 ...

  4. 网络编程:使用poll单线程处理所有I/O事件

    事件驱动模型 事件驱动的好处:占用资源少,效率高,可扩展性强,是支持高性能高并发的不二之选. 事件驱动模型也叫作反应堆模型(reactor),或者是Event loop模型,该模型的核心有两点: 1. ...

  5. 用curl测网速统计访问耗时

      在<从基础到高级,带你结合案例深入学习curl命令>中,介绍了curl的使用方法,这里介绍一个用于统计响应耗时的最佳实践,助力老铁们合理设置网络超时时间.   下面介绍一个用于统计访问 ...

  6. 代码随想录第三天 | 链表part01

    链表理论基础 建议:了解一下链表基础,以及链表和数组的区别 文章链接:https://programmercarl.com/链表理论基础.html 不是很了解链表和数组区别的可以先看看以上的文章. 2 ...

  7. 前端WebSocket的方法封装

    一.封装方法 在项目根目录src下的utils中新增webSocketManager.js封装文件,代码内容如下: // webSocketManager.js /** WebSocketMessen ...

  8. 【SPIE独立出版-稳定检索】第二届遥感与数字地球国际学术会议 (RSDE 2025)

    第二届遥感与数字地球国际学术会议 (RSDE 2025) 2025 2nd International Conference on Remote Sensing and Digital Earth 大 ...

  9. GitHub 汉化神器,2步快速解锁中文化 GitHub 界面!

    前言 你是否曾因 GitHub 的英文界面而头疼,不知道该如何上手使用?现在,通过github-chinese这款开源(GPL-3.0 license).免费的汉化插件,只需简单2步即可实现 GitH ...

  10. 数据湖选型指南|Hudi vs Iceberg 数据更新能力深度对比

    数据湖作为新一代大数据基础设施,近年来持续火热,许多前线的同学都在讨论数据湖应该怎么建,许多企业也都在构建或者计划构建自己的数据湖.基于此,自然引发了许多关于数据湖选型的讨论和探究.但是经过搜索之后我 ...