Skip to content

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