当前位置: 首页 > news >正文

Linux下使用docker nginx部署vue前端项目工程

1、使用Docker和Nginx部署Vue项目的步骤

1、准备好VUE项目,已打包编译

2、docker环境已完成安装

3、本地环境上创建nginx目录,下包括conf,html,logs目录。用于容器映射(其实是方便修改文件,因为在容器中不方便修改,在修改后restart容器即可加载)

4、拉取nginx镜像

5、创建容器并映射至之前的目录

6、启动容器

7、验证

2、详细步骤

2.1、准备Vue项目

确保Vue项目已构建完成,生成静态文件。在项目根目录运行以下命令:

npm run build

2.2、docker环境已安装

docker info

2.3、创建本地映射目录

在本地环境中自定义一个目录:示例是在/home/d_app/nginx

# 容器映射目录
mkdir -p /usr/share/nginx/conf
mkdir -p /usr/share/nginx/html
mkdir -p /usr/share/nginx/logs

在conf目录下创建配置文件:

# conf配置文件
touch /usr/share/nginx/conf/nginx.conf

在nginx.conf文件添加如下配置

# 配置文件内容worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen     8080;server_name  localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}# 代理转发请求至网关,prod-api标识解决跨域问题# location /prod-api/ {#    proxy_pass http://0.0.0.0:9999/;# }}
}

2.4、拉取镜像

# 拉取镜像
docker pull nginx# 查看镜像
docker images

2.5、创建容器并启动

docker run -it -d \
--name nginx \
-p 8080:8080 \
-v /usr/share/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/share/nginx/html:/usr/share/nginx/html \
-v /usr/share/nginx/logs:/usr/share/nginx/logs \
--restart=always \
nginx 
  • 重新启动新的容器
    下面代码-v前面被处理过,可直接复制使用,\ 表示换下一行继续
    -d: 后台启动
    -p: 宿主机的80端口映射容器的80端口
    -v: 挂载宿主机文件或目录到容器,分别表示配置文件和nginx工作空间目录的映射,冒号左边是宿主机,右边是容器的,这样修改宿主机的配置文件和工作空间就可以同步到容器
    –restart=always: 伴随docker重启自动重启该容器

2.6、创建容器并启动

# 查看容器docker ps -a# 查看nginx启动日志docker logs nginx

2.7、启动、关闭、重启nginx

# 启动
docker start nginx# 停止
docker stop nginx# 重启
docker restart nginx

2.8、验证部署

访问http://localhost:8080,确认前端应用正常运行。

3、注意事项

  • 确保dist目录已生成且包含index.html
  • 若需支持SPA路由,必须配置Nginx的try_files规则。
  • 拉取镜像时,有可能会报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection

http://www.lqws.cn/news/524089.html

相关文章:

  • vue2 使用el-form中el-form-item单独绑定rules不生效问题
  • IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)
  • LOOP如何让长周期交互LLM代理在复杂环境中实现突破?
  • 正则表达式匹配实现
  • Boosting:从理论到实践——集成学习中的偏差征服者
  • Prompt:面向目标的提示词
  • WeakAuras Lua Script [ICC BOSS 12 - The Lich King]
  • Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
  • 自动驾驶数据特征提取实战:用Python打开智能驾驶的新视角
  • 深入理解残差网络(ResNet):原理与PyTorch实现
  • Mysql数据库操作大全万字详解
  • 【Redis】Redis的下载安装和配置
  • 检查StringBuilder是否包含字符串
  • ARM内核之CMSIS
  • 【机器学习】非参数贝叶斯回归方法 GPR
  • ipfs在windows下载和安装
  • JSON框架转化isSuccess()为sucess字段
  • C++(智能指针)
  • Liunx操作系统笔记2
  • linux-修改文件命令(补充)
  • IT运维效率提升: 当IT监控遇上3D可视化
  • 三步实现B站缓存视频转MP4格式
  • 记一次AWS 中RDS优化费用使用的案例
  • Postman鉴权动态传参?对比脚本变量vs环境变量!
  • 理论加案例,一文读懂数据分析中的分类建模
  • 通过pyqt5学习MVC
  • 代理型 AI 重塑营销格局:国产 R²AIN SUITE 如何破解数据与技术瓶颈,实现 AI 赋能全链路提效
  • VScode常用快捷键【个人总结】
  • 2024年AEI SCI1区TOP,强化学习人工兔优化算法RLTARO+山地森林地形无人机编队路径规划,深度解析+性能实测
  • Dify、n8n、Coze、FastGPT 和 Ragflow 对比分析:如何选择最适合你的智能体平台?