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

信创UOS,Docker 完整操作部署(Dockerfile部署方式)排错整合

文档说明

  • 整合全部会话内容:Docker资源清理、Linux磁盘爆满处理、Java8+Tomcat9+Nginx1.26+Redis7.4容器完整部署、Tomcat部署Vue排错、常用命令及日常维护。

  • 已修复所有语法错误(如Dockerfile FROM指令、脚本命令笔误),所有命令可直接复制运行,无冗余、无冲突。

  • 基础镜像固定为debian:10(解决源失效问题),放弃ubuntu24.04适配,与原有部署流程完全兼容。

  • 核心特性:Tomcat conf目录映射(宿主机直接修改配置)、服务启停脚本自动化、容器开机自启、全路径无变量。

  • /home/yhfx/RailwayEnvAna/java_project是测试服务器规定放置的路径,可根据实际情况调整。

  • JDK下载地址https://github.com/frekele/oracle-java/releases/download/8u101-b13/jdk-8u101-linux-x64.tar.gz

  • tomcat下载地址https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.95/bin/apache-tomcat-9.0.95.tar.gz

  • nginx下载地址http://nginx.org/download/nginx-1.26.2.tar.gz

  • redis下载地址https://download.redis.io/releases/redis-7.4.1.tar.gz

一、Docker 镜像&资源清理(解决镜像冗余、磁盘占用)

1. 删除 悬空镜像

# 交互式删除(需确认)dockerimage prune# 无需确认,强制删除dockerimage prune-f# 精准删除指定ID的悬空镜像(替换镜像ID即可)dockerrmi be634fe64fb2

2. 彻底清理Docker所有无用资源(释放大量磁盘空间)

dockersystem prune-a-f

清理范围:未使用镜像、停止的容器、无用网络、构建缓存、悬空镜像

二、Linux 磁盘空间不足 / apt 报错解决

针对apt安装依赖报错、磁盘爆满问题,执行以下命令:

# 清理apt缓存(释放缓存占用)sudoaptclean# 清理系统日志,限制日志大小为100Msudojournalctl --vacuum-size=100M# 查看磁盘占用情况,定位爆满目录df-h

三、容器部署前置操作(必执行,避免冲突)

1. 清理旧环境(旧容器、旧镜像)

部署前彻底删除历史容器和镜像,避免配置冲突:

# 删除所有相关旧容器(v1/v2/v3版本)dockerrm-fjava8_tomcat9_nginx126_redis74_v1dockerrm-fjava8_tomcat9_nginx126_redis74_v2dockerrm-fjava8_tomcat9_nginx126_redis74_v3# 删除所有相关旧镜像(v1/v2/v3版本)dockerrmi-fjava8_tomcat9_nginx126_redis74:v1dockerrmi-fjava8_tomcat9_nginx126_redis74:v2dockerrmi-fjava8_tomcat9_nginx126_redis74:v3# 验证清理结果(无相关镜像/容器即为成功)dockerimagesdockerps-a

2. 创建宿主机挂载目录并授权

创建所有需要挂载的目录(含Tomcat conf配置目录),赋予777权限避免挂载失败:

# 创建基础目录及各组件挂载目录mkdir-p/home/yhfx/RailwayEnvAna/java_projectmkdir-p/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/webappsmkdir-p/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/logsmkdir-p/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/logmkdir-p/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/conf# Tomcat配置目录(新增)mkdir-p/home/yhfx/RailwayEnvAna/java_project/nginx_folder/confmkdir-p/home/yhfx/RailwayEnvAna/java_project/nginx_folder/logsmkdir-p/home/yhfx/RailwayEnvAna/java_project/redis_folder/confmkdir-p/home/yhfx/RailwayEnvAna/java_project/redis_folder/logsmkdir-p/home/uos/gongwu/yhfx# 赋予目录777权限,避免挂载权限不足chmod-R777/home/yhfx/RailwayEnvAna/java_projectchmod-R777/home/uos/gongwu/yhfx

四、创建服务启停统一脚本(create_all_scripts.sh)

通过cat命令直接创建统一脚本,执行后自动生成所有服务(Redis/Nginx/Tomcat)的启停小脚本,无需手动逐个创建:

cd/home/yhfx/RailwayEnvAna/java_project# 外部创建统一脚本(包含所有服务启停小脚本的创建命令)cat>create_all_scripts.sh<<'EOF' #!/bin/bash # 统一创建所有服务启停小脚本,执行后自动生成所有所需sh脚本 cd / # 1. 创建Redis启停脚本(已修正,避免容器退出) cat > start_redis.sh <<'EOF1' #!/bin/bash # 启动Redis(自动检查配置文件,输出启动结果,完整可执行) # 关键修复:daemonize no,禁止Redis后台运行,防止容器退出 if [ ! -f "/usr/local/redis/conf/redis.conf" ]; then echo "Redis配置文件不存在,创建默认配置文件" echo "daemonize no" > /usr/local/redis/conf/redis.conf echo "logfile /var/log/redis/redis.log" >> /usr/local/redis/conf/redis.conf echo "dir /data" >> /usr/local/redis/conf/redis.conf fi # 停止原有Redis进程,避免多实例冲突 pkill redis-server # 启动Redis并指定配置文件,前台运行 redis-server /usr/local/redis/conf/redis.conf & sleep 1 # 验证启动结果 if pgrep redis-server >/dev/null; then echo "Redis启动成功" else echo "Redis启动失败,请查看日志:cat /var/log/redis/redis.log" fi EOF1cat>stop_redis.sh<<'EOF1' #!/bin/bash # 停止Redis(输出停止结果,失败可强制停止,完整可执行) pkill redis-server sleep 1 if ! pgrep redis-server >/dev/null; then echo "Redis停止成功" else echo "Redis停止失败,强制停止:pkill -9 redis-server" pkill -9 redis-server fi EOF1cat>restart_redis.sh<<'EOF1' #!/bin/bash # 重启Redis(整合停止+启动+验证,解决重启后仍未运行问题,完整可执行) echo "正在重启Redis..." pkill redis-server sleep 1 # 关键修复:daemonize no,禁止Redis后台运行,防止容器退出 if [ ! -f "/usr/local/redis/conf/redis.conf" ]; then echo "Redis配置文件不存在,创建默认配置文件" echo "daemonize no" > /usr/local/redis/conf/redis.conf echo "logfile /var/log/redis/redis.log" >> /usr/local/redis/conf/redis.conf echo "dir /data" >> /usr/local/redis/conf/redis.conf fi # 启动Redis,前台运行 redis-server /usr/local/redis/conf/redis.conf & sleep 1 # 验证重启结果 if pgrep redis-server >/dev/null; then echo "Redis重启成功" else echo "Redis重启失败,请查看日志:cat /var/log/redis/redis.log" fi EOF1# 2. 创建Nginx启停脚本cat>start_nginx.sh<<'EOF1' #!/bin/bash # 启动Nginx(带启动验证,完整可执行) /usr/local/nginx126/sbin/nginx sleep 1 if pgrep nginx >/dev/null; then echo "Nginx启动成功" else echo "Nginx启动失败,请检查配置文件:/usr/local/nginx126/conf/nginx.conf" fi EOF1cat>stop_nginx.sh<<'EOF1' #!/bin/bash # 停止Nginx(带停止验证,失败可强制停止,完整可执行) /usr/local/nginx126/sbin/nginx -s stop sleep 1 if ! pgrep nginx >/dev/null; then echo "Nginx停止成功" else echo "Nginx停止失败,强制停止" pkill -9 nginx fi EOF1cat>restart_nginx.sh<<'EOF1' #!/bin/bash # 重启Nginx(配置修改后生效,带重启验证,完整可执行) /usr/local/nginx126/sbin/nginx -s reload sleep 1 if pgrep nginx >/dev/null; then echo "Nginx重启成功" else echo "Nginx重启失败,尝试重新启动..." /usr/local/nginx126/sbin/nginx fi EOF1# 3. 创建Tomcat启停脚本cat>start_tomcat.sh<<'EOF1' #!/bin/bash # 启动Tomcat(带启动验证,完整可执行) pkill java sleep 1 /usr/local/tomcat9/bin/catalina.sh start sleep 2 if pgrep java >/dev/null; then echo "Tomcat启动成功" else echo "Tomcat启动失败,请查看日志:/usr/local/tomcat9/logs/catalina.out" fi EOF1cat>stop_tomcat.sh<<'EOF1' #!/bin/bash # 停止Tomcat(带停止验证,失败可强制停止,完整可执行) pkill java sleep 1 if ! pgrep java >/dev/null; then echo "Tomcat停止成功" else echo "Tomcat停止失败,强制停止" pkill -9 java fi EOF1cat>restart_tomcat.sh<<'EOF1' #!/bin/bash # 重启Tomcat(带重启验证,完整可执行) echo "正在重启Tomcat..." pkill java sleep 1 /usr/local/tomcat9/bin/catalina.sh start sleep 2 if pgrep java >/dev/null; then echo "Tomcat重启成功" else echo "Tomcat重启失败,请查看日志:/usr/local/tomcat9/logs/catalina.out" fi EOF1# 4. 创建所有服务统一启停脚本cat>all_start.sh<<'EOF1' #!/bin/bash # 启动所有服务(完整可执行,带启动顺序控制) echo "开始启动所有服务..." /start_redis.sh sleep 1 /start_nginx.sh sleep 1 # 取消调用/start_tomcat.sh,避免与container_start.sh中前台启动重复 echo "所有服务启动完成,可执行验证命令查看状态" EOF1cat>all_stop.sh<<'EOF1' #!/bin/bash # 停止所有服务(完整可执行,带停止顺序控制) echo "开始停止所有服务..." /stop_tomcat.sh sleep 1 /stop_nginx.sh sleep 1 /stop_redis.sh echo "所有服务停止完成" EOF1cat>all_restart.sh<<'EOF1' #!/bin/bash # 重启所有服务(完整可执行,整合停止+启动) echo "开始重启所有服务..." /all_stop.sh sleep 2 /all_start.sh echo "所有服务重启完成" EOF1# 5. 创建容器启动脚本(维持容器存活)cat>container_start.sh<<'EOF1' #!/bin/bash set -e # 启动所有服务 /all_start.sh # 前台运行Tomcat,维持容器存活 exec /usr/local/tomcat9/bin/catalina.sh run EOF1# 给所有生成的脚本赋予可执行权限,确保可直接运行chmod+x ./*.shecho"所有服务启停脚本创建完成!"EOF

五、创建Dockerfile(debian:10,无语法错误)

采用cat命令直接创建Dockerfile,基础镜像为debian:10(解决源失效),已删除Nginx UTF-8配置,集成所有组件安装逻辑:

cd/home/yhfx/RailwayEnvAna/java_projectcat>Dockerfile<<'EOF' FROM debian:10 # 配置软件源,解决debian10源失效问题(参考archive.debian.org官方源) RUN echo "deb http://archive.debian.org/debian buster main contrib non-free" > /etc/apt/sources.list && \ echo "deb http://archive.debian.org/debian-security buster/updates main contrib non-free" >> /etc/apt/sources.list && \ echo "Acquire::Check-Valid-Until false;" > /etc/apt/apt.conf.d/10no-check # 配置时区(北京时间),安装依赖、dmidecode工具及sudo命令 ENV TZ=Asia/Shanghai RUN apt-get update && apt-get install -y tzdata \ gcc make libpcre3-dev zlib1g-dev tar curl procps net-tools iproute2 vim \ dmidecode sudo locales pkg-config && \ # 确认时区配置,避免时区偏差 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 创建Redis必需目录并授权,避免启动报错 RUN mkdir -p /usr/local/redis/conf /var/log/redis /data && chmod 777 /var/log/redis /data # 安装JDK8 COPY jdk-8u101-linux-x64.tar.gz /jdk.tar.gz RUN tar zxf /jdk.tar.gz -C /usr/local && \ mv /usr/local/jdk1.8.0_101 /usr/local/jdk8 && rm -f /jdk.tar.gz ENV JAVA_HOME=/usr/local/jdk8 ENV PATH=$JAVA_HOME/bin:$PATH # 安装Tomcat9 COPY apache-tomcat-9.0.95.tar.gz /tomcat.tar.gz RUN tar zxf /tomcat.tar.gz -C /usr/local && \ mv /usr/local/apache-tomcat-9.0.95 /usr/local/tomcat9 && rm -f /tomcat.tar.gz ENV CATALINA_HOME=/usr/local/tomcat9 ENV PATH=$CATALINA_HOME/bin:$PATH # 安装Nginx1.26.2(已删除UTF-8配置行,符合需求) COPY nginx-1.26.2.tar.gz /nginx.tar.gz RUN tar zxf /nginx.tar.gz && cd nginx-1.26.2 && \ ./configure --prefix=/usr/local/nginx126 && make -j4 && make install && cd .. && rm -rf *nginx* # 安装Redis7.4.1 COPY redis-7.4.1.tar.gz /redis.tar.gz RUN tar zxf /redis.tar.gz && cd redis-7.4.1 && make -j4 && make install && cd .. && rm -rf *redis* # 复制宿主机外部创建的统一脚本,复制到容器内并执行,自动生成所有小脚本 COPY create_all_scripts.sh /create_all_scripts.sh # 赋予统一脚本可执行权限,并执行脚本,生成所有服务启停小脚本 RUN chmod +x /create_all_scripts.sh && /create_all_scripts.sh # 给所有生成的小脚本赋予可执行权限(双重保障,确保可正常运行) RUN chmod +x /*.sh # 容器启动命令(执行启动脚本,维持容器存活) CMD ["/container_start.sh"] EOF

六、构建镜像&复制配置文件

1. 构建v3版本镜像

cd/home/yhfx/RailwayEnvAna/java_projectdockerbuild-tjava8_tomcat9_nginx126_redis74:v3.

构建成功后,执行docker images可看到对应镜像;若构建失败,先执行docker rmi -f java8_tomcat9_nginx126_redis74:v3删除失败镜像,再重新构建。

2. 复制容器内默认配置到宿主机(必执行)

创建复制脚本,自动完成容器内配置文件复制、临时容器管理及目录授权:

cat>/home/yhfx/RailwayEnvAna/java_project/copy_configs.sh<<'EOF' #!/bin/bash cd /home/yhfx/RailwayEnvAna/java_project echo "==================== 开始复制容器内默认文件 =====================" # 启动临时容器(后台运行60秒,确保复制完成) docker run -d --rm --name temp_container java8_tomcat9_nginx126_redis74:v3 sleep 60 # 复制 Nginx 配置文件 docker cp temp_container:/usr/local/nginx126/conf/. nginx_folder/conf/ # 复制 Tomcat 配置、日志、项目目录(含conf目录) docker cp temp_container:/usr/local/tomcat9/webapps/. tomcat_folder/webapps/ docker cp temp_container:/usr/local/tomcat9/logs/. tomcat_folder/logs/ docker cp temp_container:/usr/local/tomcat9/log/. tomcat_folder/log/ docker cp temp_container:/usr/local/tomcat9/conf/. tomcat_folder/conf/ # 复制Tomcat配置 # 复制 Redis 配置、日志目录 docker cp temp_container:/usr/local/redis/conf/. redis_folder/conf/ docker cp temp_container:/var/log/redis/. redis_folder/logs/ # 停止临时容器,自动清理 docker stop temp_container # 授权(含Tomcat conf目录),避免挂载权限不足 chmod -R 777 /home/yhfx/RailwayEnvAna/java_project echo "==================== 全部复制完成! =====================" EOF

执行复制命令:

bash/home/yhfx/RailwayEnvAna/java_project/copy_configs.sh

七、容器启动&状态验证

1. 容器启动命令(最终版,无语法错误)

# 报错排查:若出现「Unable to find image 'xxx:v3' locally」,先重新构建镜像#cd /home/yhfx/RailwayEnvAna/java_project#docker build -t java8_tomcat9_nginx126_redis74:v3 .# 启动前删除同名容器(避免冲突)#docker rm -f java8_tomcat9_nginx126_redis74_v3# 启动容器(开机自启、完整挂载,含Tomcat conf映射)dockerrun-d\--restart=always\--privileged\--namejava8_tomcat9_nginx126_redis74_v3\-p80:80\-p8080:8080\-p6379:6379\-v/etc/localtime:/etc/localtime\-v/dev/mem:/dev/mem\-v/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/webapps:/usr/local/tomcat9/webapps\-v/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/logs:/usr/local/tomcat9/logs\-v/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/log:/usr/local/tomcat9/log\-v/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/conf:/usr/local/tomcat9/conf\-v/home/yhfx/RailwayEnvAna/java_project/nginx_folder/conf:/usr/local/nginx126/conf\-v/home/yhfx/RailwayEnvAna/java_project/nginx_folder/logs:/usr/local/nginx126/logs\-v/home/yhfx/RailwayEnvAna/java_project/redis_folder/conf:/usr/local/redis/conf\-v/home/yhfx/RailwayEnvAna/java_project/redis_folder/logs:/var/log/redis\-v/home/uos/gongwu/yhfx:/home/uos/gongwu/yhfx\java8_tomcat9_nginx126_redis74:v3

2. 容器进入&服务验证

# 进入容器(启动后等待5秒,确保服务启动完成)dockerexec-itjava8_tomcat9_nginx126_redis74_v3bash# 验证dmidecode、sudo及核心服务dmidecode# 验证工具可用sudo-l# 验证sudo可用(debian10默认无密码,回车即可)# 验证Redis、Nginx、Tomcat运行状态echo-n"Redis: "&&pgrep redis-server>/dev/null&&echo"✅ 运行"||echo"❌ 未运行"echo-n"Nginx: "&&pgrep nginx>/dev/null&&echo"✅ 运行"||echo"❌ 未运行"echo-n"Tomcat: "&&pgrepjava>/dev/null&&echo"✅ 运行"||echo"❌ 未运行"# 服务未运行时,快速启动(容器内执行)# 启动Redis:/start_redis.sh# 启动Nginx:/start_nginx.sh# 启动Tomcat:/start_tomcat.sh# 一键启动所有服务:/all_start.sh

八、常见报错排错(核心重点)

1. Tomcat 部署 Vue 报错(MIME 类型异常)

报错信息:

Failed to load module script: Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of ""

解决方案(通过Tomcat conf映射修改,无需进入容器):

# 1. 宿主机直接编辑Tomcat配置文件vim/home/yhfx/RailwayEnvAna/java_project/tomcat_folder/conf/web.xml# 2. 在 </web-app> 之前添加以下MIME映射(复制完整添加)<mime-mapping><extension>js</extension><mime-type>application/javascript</mime-type></mime-mapping><mime-mapping><extension>css</extension><mime-type>text/css</mime-type></mime-mapping><mime-mapping><extension>html</extension><mime-type>text/html</mime-type></mime-mapping># 3. 重启容器生效dockerrestart java8_tomcat9_nginx126_redis74_v3

2. Dockerfile 报错(FROM requires either one or three arguments)

报错原因:FROM指令与注释同列,导致语法解析失败

解决方案:确保FROM指令单独一行,无多余注释(本文档中Dockerfile已修复此问题)。

3. Redis 启动失败(容器退出)

核心原因:Redis配置中daemonize=yes(后台运行),导致容器退出

解决方案:本文档中Redis启停脚本已自动将daemonize设为no,无需手动修改;若仍失败,查看日志排查:

# 查看Redis启动日志dockerexec-itjava8_tomcat9_nginx126_redis74_v3cat/var/log/redis/redis.log# 强制重启Redisdockerexec-itjava8_tomcat9_nginx126_redis74_v3 /restart_redis.sh

九、常用命令汇总(日常维护必备)

1. Docker 基础命令

# 查看所有镜像dockerimages# 查看运行中的容器dockerps# 查看所有容器(含停止的)dockerps-a# 进入容器dockerexec-itjava8_tomcat9_nginx126_redis74_v3 /bin/bash# 停止容器dockerstop java8_tomcat9_nginx126_redis74_v3# 启动容器dockerstart java8_tomcat9_nginx126_redis74_v3# 重启容器dockerrestart java8_tomcat9_nginx126_redis74_v3# 删除容器dockerrm-fjava8_tomcat9_nginx126_redis74_v3# 删除镜像dockerrmi-fjava8_tomcat9_nginx126_redis74:v3# 查看容器实时日志dockerlogs-fjava8_tomcat9_nginx126_redis74_v3

2. 容器内服务维护命令

# Redis维护/start_redis.sh# 启动/stop_redis.sh# 停止/restart_redis.sh# 重启# Nginx维护/start_nginx.sh# 启动/stop_nginx.sh# 停止/restart_nginx.sh# 重启nginx-sreload# 重载配置(容器内)# Tomcat维护/start_tomcat.sh# 启动/stop_tomcat.sh# 停止/restart_tomcat.sh# 重启# 统一维护/all_start.sh# 一键启动所有服务/all_stop.sh# 一键停止所有服务/all_restart.sh# 一键重启所有服务

3. 宿主机常用维护命令

# 查看端口占用(80、8080、6379)ss-tlnp|grep-E"80|8080|6379"# 宿主机直接重启Tomcat(无需进入容器)dockerexec-itjava8_tomcat9_nginx126_redis74_v3 /restart_tomcat.sh# 修改统一脚本后,重新构建镜像cd/home/yhfx/RailwayEnvAna/java_projectdockerbuild-tjava8_tomcat9_nginx126_redis74:v3.

十、注意事项

  • 所有命令均需在宿主机执行(除容器内维护命令外),且默认路径为/home/yhfx/RailwayEnvAna/java_project,请勿随意修改路径。

  • 宿主机目录权限必须为777,否则会出现挂载失败、日志无法写入等问题,配置文件复制后会自动授权。

  • 配置文件复制步骤(第六步)必须在构建镜像后、启动容器前执行,否则宿主机空目录会覆盖容器内默认配置。

  • 镜像和容器版本号统一为v3,因Dockerfile有修改,必须重新构建镜像,否则配置不生效。

  • 修改宿主机映射目录下的配置文件(Nginx/Redis/Tomcat conf)后,需重启对应服务或容器,配置才能生效。

  • 容器开机自启依赖--restart=always参数,服务器重启后,容器会自动启动,无需手动操作。

  • 已删除Nginx的UTF-8配置,若出现Nginx中文乱码,可手动在宿主机nginx_folder/conf/nginx.conf中添加配置。

  • Tomcat conf目录映射后,可直接在宿主机修改配置,无需进入容器,修改后重启Tomcat即可生效。

http://www.jsqmd.com/news/771969/

相关文章:

  • WarcraftHelper:让经典魔兽争霸3在现代系统上高效运行的全面优化方案
  • 如何从GoPro视频中提取GPS轨迹:终极实战指南
  • 2026年男孩、女孩、宝宝起名/取名公司深度观察:合规化定制机构解析 - 深度智识库
  • 基于深度学习的YOLO26智慧工业图像识别 车辆缺陷识别 车辆玻璃破损检测 车辆凹陷识别 车辆划痕检测 数据集第10681期
  • 5分钟掌握SVGcode:浏览器内一键实现位图到矢量图的智能转换
  • 2026年4月质量好的硬度计直销厂家推荐,30T液压万能试验机/60吨材料万能试验机,硬度计供应商推荐 - 品牌推荐师
  • Rust 文件IO操作实战:读写文件的艺术
  • 【教学类-160-21】20260503 AI视频培训-练习021“豆包AI视频《春花》+豆包图片风格:复古动漫
  • Tiny C Compiler:极简主义如何重塑C语言编译体验
  • 摩托罗拉Defy卫星链接器:双向卫星通信技术解析
  • 【深度测评】2026 年纯水设备/软化水设备/超纯水处理/反渗透水处理设备厂家:实力企业引领行业绿色升级 - 深度智识库
  • 如何快速创建小米手表个性表盘:Mi-Create可视化设计工具终极指南
  • 三电阻采样电路设计避坑:LM324运放选型、电阻匹配与共模电压那些事儿
  • 无锡可靠的西装定制哪家划算?维纳缇等5大品牌深度解析 - 西装爱好者
  • Vue3 + AntV X6 实战:从零搭建一个可拖拽、可删除的流程图编辑器(附完整源码)
  • 2026年净化水/纯工业水/一体化污水/废水/高盐废水处理设备厂家:技术驱动与全周期服务的标杆企业解析 - 深度智识库
  • 抠图公章怎么制作?2026年最全教程+工具推荐
  • 观察 Taotoken 用量看板如何帮助团队清晰掌握 API 成本分布
  • Anthropic 拿下 Colossus 1 全部算力,Claude 体验提升、覆盖范围或扩大?
  • 基于Node.js与React的ChatGPT克隆项目全栈架构解析与实战部署
  • carconfig_updater.cpp 中的疑问?
  • ESP32 SPI模式读写SD卡,从硬件连接到文件操作完整流程(附代码避坑点)
  • AISMM不是培训,是能力操作系统:奇点大会首发《AISMM实施成熟度评估矩阵》(含6维度22项量化指标)
  • 信得过的厂家!2026广州聚杰芯科交通流量调查系统,全流程严苛品控更安心 - 品牌速递
  • 怎么在 CloudCone VPS 上部署 CDN 加速静态资源访问
  • 4.28阿里云存储软件
  • 【PostgreSQL从零到精通】第36篇:PostgreSQL内存配置与大页内存优化
  • Cursor Free VIP:3步轻松解锁AI编辑器无限使用权限,告别“请求次数已达上限“
  • Milvus 向量数据库部署与 BGE-M3 模型加载的踩坑记录
  • 2026交调系统十大品牌盘点,广州聚杰芯科凭实力上榜 - 品牌速递