打包前端
前端build
- 在根目录的package.json文件设置build方式

- 打包完成后会生成dist包,就是上面截图跟docker同级目录的包
- 在与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
- listen 80; 和 listen [::]:80;:指定服务器监听80端口,既支持IPv4又支持IPv6连接。
- gzip on;:启用gzip压缩以压缩响应内容。
- gzip_min_length 1k;:指定压缩响应的最小长度。长度小于此值的响应将不会被压缩。
- gzip_comp_level 9;:设置压缩级别为9,这是最高的压缩级别。
- gzip_types ...;:指定应该使用gzip压缩的文件类型。
- gzip_vary on;:在响应中添加"Vary: Accept-Encoding"头,告诉缓存服务器响应的内容取决于请求中"Accept-Encoding"头的值。
- gzip_disable "MSIE [1-6].";:禁用特定版本的Internet Explorer的gzip压缩。
- 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配置的其他地方定义。
- root /usr/share/nginx/html; :设置用于提供文件的根目录。在这种情况下,它设置为 /usr/share/nginx/html。
- include /etc/nginx/mime.types;:包含MIME类型文件,该文件将文件扩展名映射到MIME类型。
- location / { index index.html; } :定义了如何处理根URL("/")的请求。在这种情况下,它指定如果请求的URL是"/",Nginx应该从之前指定的根目录中提供名为index.html的文件。 :::
- 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镜像,并将一些配置文件和静态资源文件添加到镜像中,最后定义了容器启动时的默认命令。
- FROM nginx:从官方的Nginx镜像开始构建。
- ADD nginx.conf /etc/nginx/conf.d/default.conf :将主机上的 nginx.conf 文件添加到镜像中的 /etc/nginx/conf.d/default.conf 。这里假设 nginx.conf 文件是一个Nginx配置文件,用于配置Nginx服务器。
- ADD docker-entrypoint.sh /docker-entrypoint.sh :将主机上的 docker-entrypoint.sh 脚本添加到镜像中的 /docker-entrypoint.sh。这个脚本可能是用于容器启动时的一些初始化操作,比如启动Nginx服务器前的一些配置。
- COPY dist /usr/share/nginx/html :将主机上的 dist 目录中的内容复制到镜像中的 /usr/share/nginx/html 目录。这个目录通常用于存放Nginx服务器要提供的静态资源文件,比如HTML、CSS、JavaScript文件等。
- CMD ["sh","/docker-entrypoint.sh"] :定义容器启动时的默认命令。在这里,它会执行 /docker-entrypoint.sh 脚本,可能是用来启动Nginx服务器或者执行其他初始化操作的脚本。 :::
前端项目进行docker操作
:::info
- 第一步
yarn build // 打包
cp -rf dist ./docker/ // 将dist拷贝在docker目录下
- 第二步
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
Docker常用命令
- 镜像相关命令 :
- docker pull <镜像名>:从远程仓库拉取镜像。
- docker images:列出本地所有的镜像。
- docker rmi <镜像ID或名字>:删除指定的镜像。
- 容器相关命令 :
- docker run <镜像名>:根据镜像创建并运行一个容器。
- docker ps:列出当前正在运行的容器。
- docker ps -a:列出所有容器,包括停止的。
- docker start <容器ID或名字>:启动一个停止的容器。
- docker stop <容器ID或名字>:停止一个运行中的容器。
- docker restart <容器ID或名字>:重启一个容器。
- docker rm <容器ID或名字>:删除指定的容器。
- docker exec -it <容器ID或名字> <命令>:在运行中的容器中执行命令。
- 容器日志相关命令 :
- docker logs <容器ID或名字>:查看容器的日志输出。
- docker logs -f <容器ID或名字>:实时跟踪容器的日志输出。
- 容器网络相关命令 :
- docker network ls:列出所有网络。
- docker network inspect <网络名>:查看指定网络的详细信息。
- docker network create <网络名>:创建一个新的网络。
- 其他常用命令 :
- docker version:查看 Docker 版本信息。
- docker info:查看 Docker 系统信息。
- docker search <关键词>:搜索 Docker Hub 中的镜像。
- docker commit <容器ID或名字> <新镜像名>:保存容器的修改为新的镜像。
- docker tag <现有镜像名> <新镜像名>:给现有的镜像打标签
新手一枚,如果有描述不正确的地址请指出,多谢!