docker--部署vue项目

简介: docker--部署vue项目

前戏


当我们在本地开发了一个vue项目之后,肯定是想部署到服务器上供其他人访问,之前介绍过使用cntos7+nginx部署项目,今天让我们来使用docker来部署我们的前端项目,首先你已经安装好了docker,并熟悉基本的docker命令。


部署


获取nginx镜像


docker pull nginx


创建 nginx config配置文件


在项目根目录下创建文件default.conf,写入如下内容

server {
    listen       80;
    server_name  localhost; # 修改为docker服务宿主机的ip
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

该配置文件定义了首页的指向为 /usr/share/nginx/html/index.html, 所以我们可以一会把构建出来的index.html文件和相关的静态资源放到/usr/share/nginx/html目录下。

创建Dockerfile文件

在项目根目录下创建Dockerfile文件,写入下面内容

FROM nginx
MAINTAINER zouzou
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
COPY dist/ /usr/share/nginx/html/

说明

FROM nginx:该镜像是基于nginx:latest镜像构建的
MAINTAINER zouzou:添加说明
RUN rm /etc/nginx/conf.d/default.conf:删除目录下的default.conf文件
ADD default.conf /etc/nginx/conf.d/:将default.conf复制到/etc/nginx/conf.d/下,用本地的default.conf配置来替换nginx镜像里的默认配置
COPY dist/ /usr/share/nginx/html/:将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/share/nginx/html/目录下


生成生成环境包


首先确保安装了node.js,npm可用

在项目根目录下执行下面命令(和package.json文件同级)

安装依赖

npm install

构建

npm run build

执行结束之后会在项目根目录下生成一个dist的文件夹


构建docker镜像


docker build -t zz-mms .

注意不要少了最后的“.”(点)

-t是给镜像命名,.(点)是基于当前目录的Dockerfile来构建镜像


查看本地镜像


docker images | grep zz-mms

到这里我们的vue应用镜像已经创建成功,接下来,我们基于该镜像启动一个docker容器


启动docker容器


docker run -d -p 9090:80 --name mms zz-mms

docker run:基于镜像启动一个容器
-d:后台方式启动
-p 9090:80: 端口映射,将宿主机的9090端口映射到容器的80端口
--name:容器名,我起的叫mms
zz-mms:要启动的镜像名称

查看启动的容器

docker ps


访问


现在我们已经启动了,访问宿主机的地址:9090就可以看到我们部署的网站了


跨域


如果你的后端接口是在别的服务器上部署的,这时候我们的default.conf就要加一个反向代理,使用下面的default.conf,然后重新构建docker镜像,启动

server {
    listen       80;
    server_name   49.235.160.132; # 修改为docker服务宿主机的ip
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
    location /pro-api{ # pro-api是vue项目里.env.production里的地址
    proxy_pass 1.1.1.1;  # 这里写的是你后端接口的地址
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


相关文章
|
10天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
31 3
实战~如何组织一个多容器项目docker-compose
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
177 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
1月前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
25天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
29 2
|
1月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
1月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
43 3
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
51 0
|
18天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
161 77
|
26天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序