哪个网站做数学题赚钱电商平台的推广及运营思路
业务场景
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: 1host: redisport: 6379# password: tskrdevadmintimeout: 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 1primary: masterdatasource:master:# MySQL8driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:// mysql-container:3306/mdm?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=trueusername: rootpassword: 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: 123456mqtt:host: tcp://localhost:1883username: makupassword: makuclientId: maku_boot_service_devdefault-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