当前位置: 首页 > news >正文

docker部署前端,配置域名和ssl

       之前使用80端口部署前端项目后,可以使用IP+端口号在公网访问到部署的项目。

       进行ICP域名备案后,可以通过域名解析将IP套壳,访问域名直接访问到部署的项目~

       如果使用http协议可以很容易实现这个需求,对nginx.conf文件进行修改,具体看docker在服务器中部署多个前端_docker部署一个项目有两个前端怎么办-CSDN博客

  server_name  localhost;#这里localhost改成域名即可

       但是这样通过http协议访问的网站会提示网站不安全。我们需要使用https协议改用443端口访问我们的项目。

       所以我们需要在服务器的官网上给域名去申请一个ssl证书,在申请成功后,直接下载ssl文件到本地。可以得到这两个域名.crt和.key的文件。

       首先进到服务器的 /etc/ssl/certs/ 目录下放入这两个文件,后续启动容器会把当前目录的文件挂载到nginx内部的 /etc/ssl/certs/ 目录中,不然会ssl文件读取失败

       然后按照之前前端部署的方式,首先在前端打包项目,得到dist文件夹。

       来到服务器,在任意位置创建一个项目文件夹。再放入dist文件夹,然后开始创建其他文件

1. Dockerfile 文件

# 使用NGINX作为基础镜像
FROM nginx# 复制解压后的网站文件到NGINX默认路径下
COPY rme/ /usr/share/nginx/html/
# 将你的 NGINX 配置文件复制到容器中的 NGINX 配置目录
COPY default.conf /etc/nginx/conf.d/default.conf

2. default.conf

upstream my_server{server 你的域名:8080; # 后端server 地址keepalive 2000;
}server {listen 80;#填写绑定证书的域名server_name  你的域名, localhost;#把http的域名请求转成https,相当于用户访问http也可以自动跳转到https,避免出现网页提示不安全return 301 https://$host$request_uri; }    server {listen  443 ssl;server_name  你的域名.cn; #证书文件名称ssl_certificate_key /etc/ssl/certs/你的域名.key;#私钥文件名称 .crt和.pem都可以用ssl_certificate /etc/ssl/certs/你的域名.crt; ssl_session_timeout 1d;ssl_session_cache shared:SSL:50m;ssl_session_tickets off;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;ssl_prefer_server_ciphers on;location / {root   /usr/share/nginx/html;try_files $uri $uri/ /index.html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

3. set.sh 

#!/bin/bash# 构建名为 test 的 Docker 镜像
docker build -t test .# 检查是否存在构建的镜像
if docker images test | grep -q test ; thenecho "镜像 test 已存在,继续执行下一步..."
elseecho "错误:镜像 test 不存在!请先构建镜像。"exit 1
fi# 运行容器
#docker run -d -p 80:80 --name test test # 创建新nginx容器 配置ssl证书
docker run --name test -p 80:80 -p 443:443    -v /usr/local/nginx/logs:/var/log/nginx -v /etc/ssl/certs:/etc/ssl/certs  --privileged=true -d --restart=always test # 检查容器是否成功运行
if docker ps -a --filter "name=^test $" --format "{{.Status}}" | grep -q "Up"; thenecho "容器 test 运行成功!"
elseecho "错误:容器 test 运行失败!"
fi

       到这里我们有 dist前端资源文件夹,Dockerfile镜像构建文件,default.conf nginx配置文件,还有/etc/ssl/certs/目录下的ssl证书文件和 set.sh运行脚本。

cd到当前目录,输入 ./set.sh 运行启动脚本。

搞定~~~~

http://www.lryc.cn/news/389257.html

相关文章:

  • 初学Spring之 IOC 控制反转
  • rpc的仅有通信的功能,在网断的情况下,比网通情况下,内存增长会是什么原因
  • 从零开始:如何设计一个现代化聊天系统
  • 香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?
  • 【C语言内存函数】
  • Mysql部署MHA高可用
  • 【算法学习】射线法判断点在多边形内外(C#)以及确定内外两点连线与边界的交点
  • SQL语句(DML)
  • uniapp小程序打开地图导航
  • webstorm格式化或保存时 vue3引入的组件被删除了
  • Java时间转换
  • Spring Boot与WebFlux的实战案例
  • vue3引入本地静态资源图片
  • git 禁止dev合并到任何其他分支
  • 第二节:如何使用thymeleaf渲染html(自学Spring boot 3.x的第一天)
  • 计算机相关术语科普之什么叫网关(Gateway)
  • B站网页部分API
  • 使用Spring Boot和Spring Security保护你的应用
  • CVE-2019-12272 Openwrt可视页面LuCi命令注入漏洞复现(完结)
  • 【多线程开发 4】从源码学习LockSupport
  • gameui C++的代码
  • 1.什么是js?特点是什么?组成部分?
  • 爬虫是什么?
  • 深入理解Presto分页查询:方法与最佳实践
  • 如何使用Go语言中的并发函数实现网络爬虫的分布式部署?
  • STM32第九课:DHT11温湿度传感器
  • JVM线上监控环境搭建Grafana+Prometheus+Micrometer
  • MyBatis(17)MyBatis 如何处理枚举类型
  • 云数据中心运维新纪元:让Linux服务器如虎添翼
  • C# 多线程造成CPU占用率高