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 <现有镜像名> <新镜像名>:给现有的镜像打标签

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

相关推荐
梦鱼13 分钟前
Vue 项目图标一把梭:Iconify 自用小记(含 TS/JS 双版本组件)
前端·javascript·vue.js
best66614 分钟前
Flex 与 Grid 的 order 参数:布局界的 "插队神器"
前端
小噔小咚什么东东14 分钟前
看到了很多次WebRTC,但是你真的需要它吗?
前端·webrtc
猫七先生15 分钟前
微信小程序一键登录可行性方案
前端·微信小程序
维他AD钙15 分钟前
前端开发 8 个非常实用小技巧:高效解决日常开发痛点
前端
光影少年20 分钟前
webpack和vite优化方案都有哪些
前端·webpack·node.js
给月亮点灯|21 分钟前
Vue基础知识-脚手架开发-初始化目录解析
前端·javascript·vue.js
kk不中嘞24 分钟前
Webpack 核心原理剖析
前端·webpack·node.js
Yvonne爱编码27 分钟前
简述ajax、node.js、webpack、git
前端·git·ajax·webpack·node.js·visual studio
周小码28 分钟前
CesiumJS详解:打造专业级Web 3D地球仪与地图的JavaScript库
前端·javascript·3d