Docker部署前端项目

打包前端

前端build

  1. 在根目录的package.json文件设置build方式
  1. 打包完成后会生成dist包,就是上面截图跟docker同级目录的包
  2. 在与dist包同级的目录新建docker文件夹,在文件夹下新建nginx.conf文件进行配置
nginx 复制代码
server {
  listen 80;
  listen [::]:80;
  # gzip config
  gzip on;
  gzip_min_length 1k;
  gzip_comp_level 9;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.";
  resolver $NAMESERVERS ipv6=off;
  root /usr/share/nginx/html;
  include /etc/nginx/mime.types;
  location / {
    index  index.html;
  }
  .....

}

:::success

  1. listen 80;listen [::]:80;:指定服务器监听80端口,既支持IPv4又支持IPv6连接。
  2. gzip on;:启用gzip压缩以压缩响应内容。
  3. gzip_min_length 1k;:指定压缩响应的最小长度。长度小于此值的响应将不会被压缩。
  4. gzip_comp_level 9;:设置压缩级别为9,这是最高的压缩级别。
  5. gzip_types ...;:指定应该使用gzip压缩的文件类型。
  6. gzip_vary on;:在响应中添加"Vary: Accept-Encoding"头,告诉缓存服务器响应的内容取决于请求中"Accept-Encoding"头的值。
  7. gzip_disable "MSIE [1-6].";:禁用特定版本的Internet Explorer的gzip压缩。
  8. resolver <math xmlns="http://www.w3.org/1998/Math/MathML"> N A M E S E R V E R S i p v 6 = o f f ; ∗ ∗ :定义用于解析域名的 D N S 服务器。 ∗ ∗ NAMESERVERS ipv6=off;**:定义用于解析域名的DNS服务器。** </math>NAMESERVERSipv6=off;∗∗:定义用于解析域名的DNS服务器。∗∗NAMESERVERS变量应该在Nginx配置的其他地方定义。
  9. root /usr/share/nginx/html; :设置用于提供文件的根目录。在这种情况下,它设置为 /usr/share/nginx/html
  10. include /etc/nginx/mime.types;:包含MIME类型文件,该文件将文件扩展名映射到MIME类型。
  11. location / { index index.html; } :定义了如何处理根URL("/")的请求。在这种情况下,它指定如果请求的URL是"/",Nginx应该从之前指定的根目录中提供名为index.html的文件。 :::
  1. dockerfile文件
nginx 复制代码
FROM nginx
ADD nginx.conf /etc/nginx/conf.d/default.conf
ADD docker-entrypoint.sh /docker-entrypoint.sh
COPY dist /usr/share/nginx/html
CMD ["sh","/docker-entrypoint.sh"]

:::success

这个Dockerfile的作用是构建一个基于Nginx的Docker镜像,并将一些配置文件和静态资源文件添加到镜像中,最后定义了容器启动时的默认命令。

  1. FROM nginx:从官方的Nginx镜像开始构建。
  2. ADD nginx.conf /etc/nginx/conf.d/default.conf :将主机上的 nginx.conf 文件添加到镜像中的 /etc/nginx/conf.d/default.conf 。这里假设 nginx.conf 文件是一个Nginx配置文件,用于配置Nginx服务器。
  3. ADD docker-entrypoint.sh /docker-entrypoint.sh :将主机上的 docker-entrypoint.sh 脚本添加到镜像中的 /docker-entrypoint.sh。这个脚本可能是用于容器启动时的一些初始化操作,比如启动Nginx服务器前的一些配置。
  4. COPY dist /usr/share/nginx/html :将主机上的 dist 目录中的内容复制到镜像中的 /usr/share/nginx/html 目录。这个目录通常用于存放Nginx服务器要提供的静态资源文件,比如HTML、CSS、JavaScript文件等。
  5. CMD ["sh","/docker-entrypoint.sh"] :定义容器启动时的默认命令。在这里,它会执行 /docker-entrypoint.sh 脚本,可能是用来启动Nginx服务器或者执行其他初始化操作的脚本。 :::

前端项目进行docker操作

:::info

  1. 第一步

yarn build // 打包

cp -rf dist ./docker/ // 将dist拷贝在docker目录下

  1. 第二步

cd docker // 进入docker文件夹

docker build -t your server IP . // 这个' . '一定不要忘记

docker push your server IP // 类似git push的操作 懂得都懂 :::

Docker部署

docker安装

:::success 参考官方:hub.docker.com/ :::

连接服务器

:::info 用SSH连接 your server :::

部署

:::info sudo docker compose down //停止服务

sudo docker pull your server // 拉取最新软件

sudo docker compose up //启动服务 :::

查看部署是否成功

:::info

  1. docker images //查看docker 镜像
  2. dockerps // 查看容器运行状态 :::

Docker常用命令

  1. 镜像相关命令
    • docker pull <镜像名>:从远程仓库拉取镜像。
    • docker images:列出本地所有的镜像。
    • docker rmi <镜像ID或名字>:删除指定的镜像。
  2. 容器相关命令
    • docker run <镜像名>:根据镜像创建并运行一个容器。
    • docker ps:列出当前正在运行的容器。
    • docker ps -a:列出所有容器,包括停止的。
    • docker start <容器ID或名字>:启动一个停止的容器。
    • docker stop <容器ID或名字>:停止一个运行中的容器。
    • docker restart <容器ID或名字>:重启一个容器。
    • docker rm <容器ID或名字>:删除指定的容器。
    • docker exec -it <容器ID或名字> <命令>:在运行中的容器中执行命令。
  3. 容器日志相关命令
    • docker logs <容器ID或名字>:查看容器的日志输出。
    • docker logs -f <容器ID或名字>:实时跟踪容器的日志输出。
  4. 容器网络相关命令
    • docker network ls:列出所有网络。
    • docker network inspect <网络名>:查看指定网络的详细信息。
    • docker network create <网络名>:创建一个新的网络。
  5. 其他常用命令
    • docker version:查看 Docker 版本信息。
    • docker info:查看 Docker 系统信息。
    • docker search <关键词>:搜索 Docker Hub 中的镜像。
    • docker commit <容器ID或名字> <新镜像名>:保存容器的修改为新的镜像。
    • docker tag <现有镜像名> <新镜像名>:给现有的镜像打标签

新手一枚,如果有描述不正确的地址请指出,多谢!

相关推荐
OpenTiny社区5 分钟前
把 SearchBox 塞进项目,搜索转化率怒涨 400%?
前端·vue.js·github
编程猪猪侠35 分钟前
Tailwind CSS 自定义工具类与主题配置指南
前端·css
qhd吴飞39 分钟前
mybatis 差异更新法
java·前端·mybatis
YGY Webgis糕手之路1 小时前
OpenLayers 快速入门(九)Extent 介绍
前端·经验分享·笔记·vue·web
患得患失9491 小时前
【前端】【vueDevTools】使用 vueDevTools 插件并修改默认打开编辑器
前端·编辑器
ReturnTrue8681 小时前
Vue路由状态持久化方案,优雅实现记住表单历史搜索记录!
前端·vue.js
UncleKyrie1 小时前
一个浏览器插件帮你查看Figma设计稿代码图片和转码
前端
遂心_1 小时前
深入解析前后端分离中的 /api 设计:从路由到代理的完整指南
前端·javascript·api
你听得到111 小时前
Flutter - 手搓一个日历组件,集成单日选择、日期范围选择、国际化、农历和节气显示
前端·flutter·架构
风清云淡_A1 小时前
【REACT18.x】CRA+TS+ANTD5.X封装自定义的hooks复用业务功能
前端·react.js