惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

博客园 - herryLo

LangChainJs之基础模型(一) 什么是生成式AI 白嫖党体验Claude Code 关于Web GIS基础知识 直播流IOS无法播放问题排查 如何全方位提升博客站点? web前端pdf.js预览pdf实例创建报错:Array. prototype` contains unexpected enumerable properties Windows 10 专业版下推送docker镜像到harbor报错:x509: certificate relies on legacy Common Name field, use SANs instead A Philosophy of Software Design 软件设计哲学 浅读-《深入浅出Nodejs》 腾讯云对象存储 COS搭建个人网站 你知道,前端工程部署有哪些方式嘛? 2022前端开发知识总结归纳(前端掌握知识) Rancher前端服务发布 知识扩展-SQL查询基础 Axios源码解析:请求响应拦截器 AntV G2可视化引擎, 有用过嘛? 弄懂!ES6中的Iterator迭代器 🔥[译] 正交设计组件的好处 GitHub Action一键部署配置,值得拥有 小程序开发指南之性能优化
如何使用Docker构建前端项目
herryLo · 2022-05-09 · via 博客园 - herryLo

作者:https://herrylo.github.io/front/

原文链接
Docker单独部署前端项目和Node项目是非常便捷的,在这里分享一下Docker的使用,主要聊聊它的部署实践。(我是window10专业版安装Docker)

Docker

Docker是一种应用容器引擎技术,类似于虚拟机,不过它的实用性、通用性、便捷性更强,Docker容器可以说就是VM,不过占用资源更少,更轻量,通过操作系统级虚拟化方法,利用更加节省的硬件资源提供给用户更多的计算资源。

Docker容器是Linux 容器的一种封装,由于容器存在独立的运行环境,Docker可以将应用程序和依赖打包容器中,启动容器即可运行程序。

Docker部署

Docker容器配合 GitHub Action、Jenkins、Rancher使用非常的便捷,当然这里说到的是Docker个人部署实践,下面主要说到的是通用前端项目部署方案。

配置nginx

在前端根目录创建 nginx.conf(与package.json同级),具体配置如下,可以根据实际项目调整修改:

server {
listen 80 default_server;
server_name _;

location / {
root /usr/share/nginx/html/web;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}

接口代理示例

location /api {

proxy_pass http://xxx.com;

proxy_buffering off;

proxy_cache off;

}

}

nginx配置的主要的作用是静态资源代理,同时接口转发。以上的配置是直接再本机运行,如果要在服务器上运行,可以将其中的配置改为:

listen 80;
server_name xxx.com;

配置Dockerfile

在根目录创建Dockerfile文件(与package.json同级)

FROM node:latest
COPY package.json /
RUN npm i --registry=https://registry.npm.taobao.org
RUN npm run build

FROM nginx:latest
# 这里的dist/目录是你的项目打包后的文件目录
COPY ./dist/ /usr/share/nginx/html/
COPY ./nginx.conf /etc/nginx/conf.d/

EXPOSE 80

上面的配置文件非常的简单,主要就是将构建打包,之后安装nginx,复制nginx配置文件,复制打包后的文件,开放80端口。

Docker镜像部署

将项目更新到服务器上,在服务器运行Docker构建命令( 当然也可以再本地构建):

Docker build -t docker/web:v1.0 .

docker/web:v1.0 是镜像名称,特别注意后页面那个点不能省略。

启动容器

docker run -d -p 8080:80 docker/web:v1.0

docker/web:v1.0 是构建镜像时设置的名称,8080:80代表将nginx的80映射到你服务器的8080端口(注意你服务器的端口是否开放8080,其他端口也可以;如果是本地访问,不用考虑这个)。

镜像启动成功后,浏览器输入localhost:8080即可访问了。