Docker 桥接网络
桥接网络
- 桥接网络是 Docker 默认的网络模式,它允许容器与宿主机共享网络,并且容器之间可以相互通信。
- 桥接网络通过创建一个虚拟网桥来实现,该网桥连接到宿主机的物理网络接口,并将容器的网络流量转发到宿主机上。
- 桥接网络模式下,容器可以访问宿主机上的网络服务,并且容器之间的网络流量可以通过宿主机进行路由。
修改 nest 环境配置文件
以前我们在定义 redis 或者 mysql 的时候,都是直接使用 ip 地址,但是这样在 docker 中是不行的,因为 实际我们获取不到.所以我们需要修改 nest 的环境配置文件,将 ip 地址改为容器名。
prod.yml
bash
# 开发环境配置
app:
prefix: ''
port: 8080
logger:
# 项目日志存储路径,相对路径(相对本项目根目录)或绝对路径
dir: '../logs'
# 文件相关
file:
# 是否为本地文件服务或cos
isLocal: true
# location 文件上传后存储目录,相对路径(相对本项目根目录)或绝对路径
location: '../upload'
# 文件服务器地址,这是开发环境的配置 生产环境请自行配置成可访问域名
domain: 'http://localhost:8080'
# 文件虚拟路径, 必须以 / 开头, 如 http://localhost:8080/profile/****.jpg , 如果不需要则 设置 ''
serveRoot: '/profile'
# 文件大小限制,单位M
maxSize: 10
# 腾讯云cos配置
cos:
secretId: ''
secretKey: ''
bucket: ''
region: ''
domain: ''
location: ''
# 数据库配置
db:
mysql:
host: 'mysqlCompose' # 这里就是DockerComPose中的MYSQL容器名
username: 'root'
password: '123456'
database: 'login_test'
port: 3306
charset: 'utf8mb4'
logger: 'file'
logging: true
multipleStatements: true
dropSchema: false
synchronize: true
supportBigNumbers: true
bigNumberStrings: true
# redis 配置
redis:
host: 'redisCompose' # 这里就是DockerComPose中的Redis容器名
password: '123456'
port: 6379
db: 0
keyPrefix: ''
# jwt 配置
jwt:
secretkey: 'jsopy'
expiresin: '5h'
refreshExpiresIn: '10h'
# 权限 白名单配置
perm:
router:
whiteList:
[
{ path: '/captchaImage', method: 'GET' },
{ path: '/registerUser', method: 'GET' },
{ path: '/register', method: 'POST' },
{ path: '/login', method: 'POST' },
{ path: '/logout', method: 'POST' },
{ path: '/perm/{id}', method: 'GET' },
{ path: '/upload', method: 'POST' },
{ path: '/user/testjwt', method: 'POST' },
{ path: '/user/testlocal', method: 'GET' },
{ path: '/user/testcustom', method: 'GET' },
]
# 用户相关
# 初始密码, 重置密码
user:
initialPassword: '123456'
# 自己写的测试
testconfig:
test: 'dev'修改 DockerCompose.yml 利用桥接网络
- 指定 Docker Compose 版本是 3.8 其他版本配置获取不一样
bash
version: '3.8'
services:
mysqlCompose:
image: mysql:8.0-debian
ports:
- '3306:3306'
volumes:
- /D/docker/mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: login_test
MYSQL_ROOT_PASSWORD: 123456
healthcheck:
test: mysql --user=root --password='123456' -e "SELECT 1;"
interval: 10s
timeout: 5s
retries: 10
networks: # 指定桥接网络
- common-network
redisCompose:
image: redis:alpine3.22
ports:
- '6379:6379'
environment:
REDIS_PASSWORD : 123456
volumes:
- /D/Docker/redis/redis.conf:/ect/redis/redis.conf
command: redis-server --requirepass 123456
healthcheck:
test: ["CMD", "redis-cli", "auth", "123456", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks: # 指定桥接网络
- common-network
nginxCompose:
image: nginx:stable-alpine
ports:
- '80:80'
volumes:
- /D/Docker/nginx:/usr/share/nginx/html
networks:
- common-network
nest1:
build:
context: ./
dockerfile: ./Dockerfile
depends_on:
mysqlCompose:
condition: service_healthy
redisCompose:
condition: service_healthy
ports:
- '5000:5000'
networks: # 指定桥接网络
- common-network
networks: # 设置桥接网络
common-network:
driver: bridge