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

衡阳网站优化教程app开发制作在哪儿

衡阳网站优化教程,app开发制作在哪儿,线上购物网站建设的可行性,濮阳微信网站开发1. 背景 在该实战中#xff0c;我们将探讨如何使用Docker Compose协同部署Nginx、Java、Mysql和Redis服务#xff0c;实现一个视频上传与展示的应用。具体需求如下#xff1a; Java应用负责上传视频和图片资源到Nginx目录下#xff0c;作为资源服务器。Nginx服务作为静态…1. 背景 在该实战中我们将探讨如何使用Docker Compose协同部署Nginx、Java、Mysql和Redis服务实现一个视频上传与展示的应用。具体需求如下 Java应用负责上传视频和图片资源到Nginx目录下作为资源服务器。Nginx服务作为静态资源服务器通过URL访问已上传的视频和图片资源。Java服务通过读取数据卷挂载的/data/init.properties文件获取服务器的IP地址用于拼接资源的访问URL。 2. 实现步骤 2.1 配置Java应用读取服务器IP 我们使用Spring的Profile注解和InitConfig类读取部署时挂载的/data/init.properties文件获取服务器IP。 拓展优化可以在项目所部署的服务器上写一个获取服务器IP的脚本Centos系统Docker获取宿主机IP地址MAC地址磁盘序列号和CPU序列号的shell脚本然后java通过运行该脚本获取服务器IP如果买了域名那更好了直接省掉拼接服务器IP的步骤。 import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Profile; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component;import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; Profile({pro, docker}) Component Data public class InitConfig {private String serverIp;Beanpublic MapString, String loadLinuxConfig() {Properties prop new Properties();try (InputStream in new BufferedInputStream(Files.newInputStream(Paths.get(/data/init.properties)))) {prop.load(new InputStreamReader(in, StandardCharsets.UTF_8));} catch (IOException e) {log.error(Failed to load local configuration file InitConfig.properties, e);}SetString keySet prop.stringPropertyNames();MapString, String configMap new HashMap();for (String key : keySet) {String value prop.getProperty(key);log.info(Configuration loaded: key{}, value{}, key, value);configMap.put(key, value);}serverIp configMap.get(data.serverIp);return configMap;} }2.2编写init.properties文件 data.serverIp该key根据自己需求随意取名。 data.serverIp192.168.xx.xx2.3调整Java资源列表展示接口 返回列表给前端的时候将获取到的服务器IP拼接到资源的Url中。 Autowiredprivate VideoInfoMapper videoInfoMapper;Autowiredprivate InitConfig initConfig;/*** 获取资源视频列表** return {link ResponseResult }* param type 视频类型* param search 搜索关键词* author yangz*/Overridepublic ResponseResultListVideoInfo getVideoList(String type, String search) {ListVideoInfo videoList videoInfoMapper.selectByTypeAndSearch(type, search);for (VideoInfo videoInfo : videoList) {// 构建相对路径String relativePath videoInfo.getFileName();// 构建完整的 URL拼接 Nginx 的部署路径videoInfo.setUrl( http://initConfig.getServerIp():yourPort/static/ relativePath);// 同样处理 imageUrlString relativeImagePath videoInfo.getImageName();videoInfo.setImageUrl(http://initConfig.getServerIp():yourPort/static/ relativeImagePath);}return new ResponseResult(videoList);}2.4 编写Docker Compose 文件 这里volumes_from属性将Nginx容器的数据卷挂载到Java容器中实现了两个容器之间数据卷的共享。 这是因为Nginx容器中的/usr/share/nginx/static目录包含了Java上传的静态资源而volumes_from确保了Java容器可以访问这个目录。这样Nginx就能够正确地服务Java上传的资源了。 version: 3 services:# Nginxnginx:image: nginx:1.22.0container_name: nginx_educationrestart: alwaysports:- yourPort:8868- 83:80volumes:- ./nginx/html:/usr/share/nginx/html- ./nginx/static:/usr/share/nginx/static- ./nginx/nginx.conf:/etc/nginx/nginx.confprivileged: true# MySQLmysql:image: mysql:5.7ports:- yourPort:3306container_name: mysql_educationrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: yourPasswordvolumes:- ./mysql:/var/lib/mysql- ./init/:/docker-entrypoint-initdb.d/# Redisredis:image: redis:5.0.3container_name: redis_educationcommand: /usr/local/bin/redis-server /usr/local/etc/redis/redis.conf --appendonly yesrestart: alwaysports:- yourPort:6379volumes:- ./redis:/data- ./redis.conf:/usr/local/etc/redis/redis.conf- ./logs/redis:/logs# Javajava:image: java:8container_name: educationports:- yourPort:jarPortenvironment:- TZAsia/Shanghai- LANGen_US.UTF-8volumes:# 映射Java应用程序jar文件- ./xxx-education-xxx-0.0.1-SNAPSHOT.jar:/data/xxx-education-xxx-0.0.1-SNAPSHOT.jar# 映射Java应用程序的初始化配置文件- ./init/init.properties:/data/init.properties# 映射Java应用程序的日志目录- ./logs:/logs# 使用volumes_from属性挂载Nginx容器的数据卷到Java容器volumes_from:- nginx# Java应用程序的入口命令entrypoint: nohup java -jar /data/xxx-education-xxx-0.0.1-SNAPSHOT.jar --spring.profiles.activedocker nohup.out depends_on:- redis- mysqlrestart: on-failure networks:default:external:name: my-education2.5 Nginx配置 在Nginx的配置中我们配置了/static/路径的访问规则通过rewrite ^/(.)/$ /$1 permanent;将URI结尾的斜杠去掉并使用alias指定静态资源的路径。 注意172.17.0.1是Docker在部署docker-compose时创建的默认网关地址。在容器网络中这个地址充当了容器之间直接通信的网关。通过配置Nginx时使用这个地址使得即使服务器IP变化也不需要修改Nginx的代理配置。这样一来容器之间的通信可以通过网关地址和端口进行实现了更加灵活和方便的部署方式。 server {listen yourPort;location / {root /usr/share/nginx/html/dist;index index.html index.htm;try_files $uri $uri/ /index.html;}# 配置静态资源访问的路径location /static/ {rewrite ^/(.)/$ /$1 permanent;alias /usr/share/nginx/static/;}location /prod-api/ {client_max_body_size 1000m;proxy_pass http://172.17.0.1:jarPort/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;}error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;} }3. 部署与访问 使用docker-compose up -d命令启动所有服务。 访问Java容器中的日志文件查看Java应用启动时是否正确加载了服务器IP。 通过浏览器访问http://serverIP:Port/static/验证Nginx是否正确访问了Java上传的资源。 4. 结语 通过这个实战我们成功搭建了一个多服务协同部署的环境其中Nginx作为静态资源服务器Java负责业务逻辑。利用Docker Compose我们实现了服务的快速部署和环境一致性为开发和测试提供了便利。
http://www.hkea.cn/news/14543230/

相关文章:

  • 泰州公司做网站企业做网站需要哪些人员
  • 房山建站公司wordpress外贸建站
  • 黄岛网站建设负面消息处理网站建设与管理难学吗
  • 做网站的公司搞什么活动上海公共招聘网官网
  • 网站建设是什么专业啊讨债女企业家中标公司被强执
  • 保定网站设计多少钱如何用手机号做WordPress
  • 郑州做个人网站的公司织梦网站模板怎么安装
  • 织梦网站内部优化自贡建设网站
  • 网站免费推广方案wordpress灰色产业
  • app企业网站模板php网站连接数据库
  • 国内产品设计公司排名seo优化技巧有哪些
  • 网站内容管理系统 下载三六五网做网站吗
  • 企业网站系统有哪些免费crm客户管理系统
  • 济南做网站软件中国核工业二三建设有限公司西南分公司
  • 梅县区住房和城乡规划建设局网站全球设计行
  • 科技设计公司网站模板东莞快速做网站
  • 网站设计用的技术建设通怎么查有无在建
  • 免费做团购网站的软件有哪些网站升级公告模板
  • 虚拟机做实验的网站无锡做网站服务
  • 双语网站建设报价金融网站模板 html下载
  • 网站页面优化工具自己做网站的费用
  • 淘宝客做的好的几个网站青岛专业网站营销
  • 青州网站搭建58同城怎么做网站
  • 企业网站商城长沙专业做网络的公司
  • 网站内容与目录结构图做网站最简单的工具
  • 做彩票生意要登陆哪个网站北京网站建设工作室
  • 邢台地区网站建设服务周到公司如何在网上推广
  • 获取网站访客qq网站建设专业的
  • 建筑公司网站管理员常州做网站公司有哪些
  • 暖色调 网站宝塔负载100wordpress