如何备份 localhost 上的数据库

了解在使用 Docker 时,如何配置 Databasus 来备份运行在 宿主机(localhost)上的 PostgreSQL 数据库。

问题所在

如果 Databasus 运行在 Docker 里,而你想备份宿主机 (localhost)上的数据库,就需要把 Docker 配置为 host 网络模式

默认情况下,Docker 容器运行在隔离网络中,无法访问 localhost 上的服务。host 网络模式让容器与宿主机共享网络命名空间。

Docker Compose 的解决方案

修改 docker-compose.yml 文件,使用 network_mode: host

services:
  databasus:
    container_name: databasus
    image: databasus/databasus:latest
    network_mode: host
    volumes:
      - ./databasus-data:/databasus-data
    restart: unless-stopped

docker run 的解决方案

使用 --network host 参数:

docker run -d \
  --name databasus \
  --network host \
  -v ./databasus-data:/databasus-data \
  --restart unless-stopped \
  databasus/databasus:latest

💡 提示:使用 host 网络模式时,在 Databasus 的备份配置中可以用 127.0.0.1 localhost 作为数据库主机连接本地数据库。你也可以不做端口映射, 直接通过 http://localhost:4005 访问 Databasus 界面。

⚠️ Windows 和 macOS 用户请注意: host 网络模式只在 Linux 上原生可用。在 Windows 和 macOS 上,Docker 运行在 Linux 虚拟机中,因此备份配置里的 数据库主机地址应使用 host.docker.internal 而不是 localhost