docker 多服务只暴露一个客户端

news2025/1/10 20:42:44

业务场景

docker部署多个服务时候,当为了安全考虑 部署了多个服务,数据库,缓存库,文件服务器啥的,如果全都暴露的话可能会增加资源侵入的风险,所以只需要挂载一个客户端端口给外部访问即可,其他服务均在内网,保障资源安全

docker 网络

可以把容器们都放在同一网络下,由于docker 容器ip不固定,所以使用容器名,让同一网络可以根据容器名字进行访问


#minio \
docker run -p 9000:9000 -p 9090:9090 \
    --name minio \
    -d --restart=always \
    -e "MINIO_ACCESS_KEY=minioadmin" \
    -e "MINIO_SECRET_KEY=tskradmin" \
    -v /home/docker/minio/data:/data \
    -v /home/docker/minio/config:/root/.minio \
    minio/minio:latest server /data



# 创建一个 Docker 网络
docker network create app-network

# 启动 MySQL 容器并连接到 Docker 网络
#挂载sql
#docker cp ./mdm.sql     mysql-container:/home.mdm.sql
#创建数据库
#CREATE DATABASE mdm;
#USE mdm;
#SOURCE /home.mdm.sql;
#docker exec -it mysql-container sh -c "mysql -u root -p2383560016 < /mdm.sql"
docker run -d \
  --name mysql-container \
  --network app-network \
  -e MYSQL_ROOT_PASSWORD=2383560016 \
  --restart unless-stopped \
  mysql:8.0.23

# 启动 Redis 容器并连接到 Docker 网络
docker run -d \
  --name redis \
  --network app-network \
  -v /home/docker/redis/data:/data \
  redis:latest \
  redis-server --appendonly yes
  #后端
docker run -id --name=backend-service --network app-network     app
docker run -id -p 7979:4000 --name=fornt-service  --network app-network     vue

上面的脚本中只有文件服务,和前端服务是挂载端口暴露给外网的,目的是给用户下载和访问服务得途径,其他服务 全部在同一网络桥下

 docker network inspect app-network

查看网络下多少容器
在这里插入图片描述
此时容器之间就可以采用容器名进行通信并且 外网无法访问

后端配置文件

spring:
  data:
    redis:
      database: 1
      host: redis
      port: 6379
      #      password: tskrdevadmin
      timeout: 6000ms  # 连接超时时长(毫秒)
  datasource:
    dynamic:
      hikari: # Hikari 连接池全局配置
        connection-timeout: 30000     # 等待连接池分配链接的最大时长(毫秒),超过这个时长还没有可用的连接则发生 SQLException,默认:30 秒
        minimum-idle: 2               # 最小空闲连接数
        maximum-pool-size: 10         # 最大连接数
        idle-timeout: 600000          # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10 分钟
        max-lifetime: 1800000         # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认: 30 分钟
        connection-test-query: SELECT 1
      primary: master
      datasource:
        master:
          # MySQL8
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql:// mysql-container:3306/mdm?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
          username: root
          password: 2383560016
          # 达梦
          #    driver-class-name: dm.jdbc.driver.DmDriver
          #    url: jdbc:dm://192.168.3.19:5236/maku_boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
          #    username: maku_boot
          #    password: 12345678
          # PostgreSQL
          #    driver-class-name: org.postgresql.Driver
          #    url: jdbc:postgresql://192.168.3.19:5432/postgres
          #    username: postgres
          #    password: 123456
  mqtt:
    host: tcp://localhost:1883
    username: maku
    password: maku
    clientId: maku_boot_service_dev
    default-topic: topic_default

后端服务均采用服务名通信

对应得前都要由于反向代理或者负载均衡,所以需要修改nginx配置文件
nginx文件

events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
     client_max_body_size 1024M;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
 
    server {
       listen 4000;
        server_name 域名;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
	try_files $uri $uri/ /index.html;
        }
 
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
        # 配置代理,解决跨域问题
     location /api/ {
        rewrite ^/api/(.*)$ /$1 break;  # 去掉 /api 前缀
        proxy_pass http://backend-service:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

 
  
 
}

前端得axios配置
vite env.production文件

//就是前端部署地址 确保请求成功达到nginx转发给内网得后端
VITE_API_URL=http://服务器:7979/api

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis——常用数据类型List

目录 List列表常用命令lpushlpushxrpushrpushlrangelpoprpoplindexlinsertllenlremltrim key start stoplset 阻塞版本命令blpopbrpop list的编码方式list的应用 List列表 Redis中的list相当于数组&#xff0c;或者 顺序表&#xff0c;一些常用的操作可以通过下面这张图来理解…

JAVA中线程池的详解

1.概念 顾名思义&#xff0c;线程池就是管理一系列线程的资源池&#xff0c;其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 这里借用《Java 并发编程的艺术》书中的部分内容来总结一下使用线程池的好处&#x…

windows vscode ssh 连接远程服务器

1.在 PowerShell 中运行以下命令&#xff0c;查看 OpenSSH 客户端是否已安装 Get-WindowsCapability -Online | Where-Object Name -like OpenSSH.Client*如果有安装的话&#xff0c;如下图 2.如果没有安装&#xff0c;那么用下面的命令进行安装 Get-WindowsCapability -On…

MQ基础知识

MQ基础 1.认识MQ 同步调用 我们现在基于OpenFeign的调用都属于是同步调用&#xff0c;那么这种方式存在哪些问题呢&#xff1f; 支付业务执行流程是这样的&#xff1a; 支付服务需要先调用用户服务完成余额扣减然后支付服务自己要更新支付流水单的状态然后支付服务调用交易…

信息安全数学基础(10)素数定理

前言 信息安全数学基础中的素数定理&#xff08;Prime Number Theorem&#xff09;是数论中一个非常重要的定理&#xff0c;它给出了小于或等于某个正整数x的素数的近似数量。这个定理在密码学、信息安全等领域有着广泛的应用&#xff0c;尤其是在设计加密算法时&#xff0c;对…

C++ —— 关于string类

目录 1. auto和范围for 1.1 auto关键字 1.2 范围for 2. string的三种遍历方式 3. string类的常用接口说明 3.1 成员函数 3.2 Iterators:&#xff08;迭代器&#xff09; 3.2.1正向迭代器和反向迭代器 3.3 Capacity&#xff08;容量&#xff09; 3.4 Modifiers&#x…

大模型微调十诫:关于将微调模型部署到生产环境的十条建议

转自;NLP工程化 大模型微调十诫&#xff1a;关于将微调模型部署到生产环境的十条建议&#xff1a; &#xff08;1&#xff09;不要盲目微调模型&#xff0c;先尝试使用提示的方式满足需求。只有当提示无法达到质量、性能或成本目标时&#xff0c;才考虑微调。 &#xff08;2…

ubuntu20.04 GLIBC从2.35降级到2.31

ubuntu20.04默认的GLIBC版本是2.31&#xff0c;因为某些库的依赖问题&#xff0c;脑子一抽把GLIBC升级到2.35&#xff0c;GLIBC升级参考一下另外一位博主的文章Ubuntu20.04更新GLIBC到2.35版本_glibc-2.35-CSDN博客 但当我想把GLIBC回退到2.31版本&#xff0c;参考网上的办法&a…

浅谈基于负荷时空均衡和弹性响应的电动汽车快充电价定价策略

摘要&#xff1a;为了引导电动汽车有序充电&#xff0c;提出了一种考虑负荷时空均衡和弹性响应的电动汽车快充电价定价策略。引入交通流理论描述交通路网&#xff0c;建立电动汽车快充负荷时空分布模型&#xff1b;考虑配电网调度和电动汽车快充负荷的弹性需求&#xff0c;构建…

【Python】从基础到进阶(七):深入理解Python中的异常处理与调试技巧

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、异常处理概述1. 什么是异常&#xff1f;2. 异常的捕获与处理 三、常见的异常类型四、自定义异常五、调试与日志记录1. 使用assert进行调试2. 使用日志记录 六、案例&#xff1a;文件操作与异常处理1. 需求分析2…

【经验技巧】瞬态信号仿真中的码型选择问题

工程师在进行通道信号仿真时&#xff0c;经常会遇到信号码型选择的问题&#xff0c;通常的码型选择有两种&#xff1a;连续周期变化、随机变化&#xff0c;那么&#xff0c;不同的码型会对结果产生截然不同的影响&#xff0c;以设计中一路差分通道为例&#xff0c;搭载信号传输…

51.【C语言】字符函数和字符串函数(strcpy函数)

承接50.【C语言】字符函数和字符串函数(上) 点我跳转 5.strcpy函数 *简单使用 cplusplus的介绍 点我跳转 strcpy:string copy 翻译: 复制字符串 复制由source指向的C字符串到由destionation指向的数组中,包括\0(终止0字符)(在\0那里停止复制) 为了防止溢出,由destionation指…

深入内核分析BindException异常原因

一、前言 前段时间公司内的站点发布时经常遇到Tomcat使用的8080端口被占用&#xff0c;导致启动报错BindException的情况。笔者参与了该问题的排查和修复&#xff0c;本文将深入Tomcat、OpenJDK、Linux内核等源码为大家讲解问题的原因以及排查过程。 报错信息 Caused by: java…

收到了大厂中秋礼盒,哪家赢了?

大家好&#xff0c;我是鸭鸭&#xff01; 中秋节越来越近啦&#xff0c;大家都收到放假通知和中秋月饼了吗&#xff1f; 各大互联网品牌大厂的中秋创意礼盒也来啦&#xff01; 字节 今年字节的中秋礼盒&#xff0c;除了广州酒家的月饼之外&#xff0c;还发了一床2m*2.3m的四…

INDEMIND:扫地机器人,仍然不够“香”

不仅需要“新花样”&#xff0c;还要搞好“基本功”。 行业祛魅&#xff0c;重啃技术战 正如所有人都知道市场会发生变化&#xff0c;但扫地机器人的陡然降温还是给大多数人上了一课。尽管到了2023年&#xff0c;市场有所复苏&#xff0c;但零售量的增长也仅为4%。一时间&…

医药|基于springboot的医药管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已…

基于vue框架的宠物管理平台的设计与实现f3193(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,医院简介,养宠知识,宠物分类,医生,预约医生,医嘱记录,宠物用品,用品分类,购买记录,供应商,宠物信息 开题报告内容 基于Vue框架的宠物管理平台的设计与实现开题报告 一、引言 随着宠物经济的兴起&#xff0c;宠物管理成为了一个日…

Win11+Ubuntu20.04双系统安装教程(避坑版)

Win11Ubuntu20.04双系统安装教程&#xff08;避坑版&#xff09; 前言系统盘制作安装Rufus系统盘制作 Windows磁盘配置移动分区&#xff08;磁盘分区时出现不连续的未分配空间需要用到&#xff0c;如果是连续的未分配空间即无需操作&#xff09;安装分区助手移动分区 安装Ubunt…

Redis的IO模型

Redis IO模型 Redis IO模型 使用的是基于 Reactor 模式的 I/O 多路复用模型。这个模型通过单线程事件循环来处理所有的客户端请求和响应。 基本模式 1. Reactor 模式 Reactor 模式是一种用于处理并发 I/O 操作的设计模式。它包含以下几个组件&#xff1a; 多路复用器&…

构建高效入学审核系统:Spring Boot解决方案

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理大学生入学审核系统的相关信息成为必然。开…