原文链接

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_set_header Host $host:$server_port;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Cookie $http_cookie;
# 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即可访问了。

最新文章

  1. 详解Adorner Layer(zz)
  2. html之内联标签img
  3. 棒棒的毛笔字PS教程
  4. 【css】 收藏 纯css打造 mackbook air
  5. postgresql info
  6. php 读xml的两种方式
  7. jquery1.9学习笔记 之选择器(基本元素五)
  8. java操作oracle的blob,clob数据
  9. Spring中多个工程停多个资源文件ignoreUnresolvablePlaceholders配置
  10. 关于oracle数据库 跨表查询建立 视图的方法
  11. zipkin链路追踪
  12. bootstrap4.0
  13. es破解xpack
  14. springmvc控制器传可变路径
  15. e793. 监听JSpinner数据变化
  16. android复制包需要修改的几个地方
  17. 20155310《Java程序设计》实验五(网络编程与安全)实验报告
  18. 记录:python读取excel文件
  19. Lua4.0中getn陷阱
  20. GOF23设计模式之享元模式(flyweight)

热门文章

  1. 一个 Redis 实例最多能存放多少的 keys?List、Set、 Sorted Set 他们最多能存放多少元素?
  2. 什么是 Spring 的依赖注入?
  3. remote debug 的详细配置
  4. http和https到底区别在哪
  5. PID控制算法的C语言实现
  6. vim的vimrc配置
  7. 《深入理解ES6》笔记—— JavaScript中的类class(9)
  8. 浅谈ES6中的Class
  9. 前台js发请求参数与后台接参数的问题
  10. Centos7 使用pm2快速安装创建定时任务