Docker 实战 -- cloudbeaver

发布于:2025-08-01 ⋅ 阅读:(18) ⋅ 点赞:(0)

前言

上一篇文章 Docker 实战 – Mysql 讲述了用 docker 搭建 mysql 数据库的过程, 连接数据库的工具很多, 但有些是收费软件, 例如: navicat(虽然它真的好用), 但这里还是拥抱开源, 推荐 dbeaver, cloudbeaver ,官网为 https://dbeaver.io/

本篇讲述用 docker 搭建 cloudbeaver 实现 web 端连接数据库执行数据库的CRUD操作

文件目录

准备对应的文件夹存储数据与配置

.
├── docker-compose.yml
└── workspace

docker-compose.yml

docker 编排文件

version: '3.9'
services:
  cloudbeaver:
    image: 'dbeaver/cloudbeaver:latest'
    volumes:
      - './workspace:/opt/cloudbeaver/workspace'
      #- './drivers:/opt/cloudbeaver/drivers'
    ports:
      - '8978:8978'
    restart: unless-stopped
    container_name: cloudbeaver
    networks:
      - docker-mysql8_mynet # 与 mysql 一个网络下
networks:
  docker-mysql8_mynet:
    external: true # 外部网络
    #driver: bridge

执行 docker-compose up -d 即可启动, 网页访问 http://localhost:8978 即可使用

docker ps # 查看运行情况

CONTAINER ID   IMAGE                        COMMAND                  CREATED          STATUS          PORTS                               NAMES
3f88c03cc6b0   dbeaver/cloudbeaver:latest   "./run-server.sh"        5 minutes ago    Up 5 minutes    0.0.0.0:8978->8978/tcp              cloudbeaver
884cd0fcd595   mysql:8.2.0                  "docker-entrypoint.s…"   19 minutes ago   Up 19 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8

cloudbeaver

网络

如果用 driver 配置, 如下, 会自动创建 beaver-docker_mynet, 会拼接上docker-compose.yml文件目录的名称, 如果mysql 的不在同一目录下, 网络是不相通的

...
    networks:
      - mynet # 与 mysql 一个网络下
networks:
  mynet:
    driver: bridge

查看 docker 网络

docker network ls          
NETWORK ID     NAME                  DRIVER    SCOPE
fded80a14cdd   beaver-docker_mynet   bridge    local
41bdd66c8c62   bridge                bridge    local
1feac6175289   docker-mysql8_mynet   bridge    local
7900c55b5ea3   host                  host      local
2940439894a8   none                  null      local

所以 docker-compose.yml 网络设置修改为与mysql 同一网络

    networks:
      - docker-mysql8_mynet # 与 mysql 一个网络下
networks:
  docker-mysql8_mynet:
    external: true # 外部网络
    #driver: bridge

连接

查询下 mysql 容器的 ip

docker inspect mysql8
...
            "Networks": {
                "docker-mysql8_mynet": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "mysql8",
                        "db",
                        "884cd0fcd595"
                    ],
                    "NetworkID": "1feac6175289013e8d59abe6c27a18cc2d2e6b4d49d1237ead9cacdd9df11637",
                    "EndpointID": "b3c2b9e91cb5e62e3876c1f608eae873491df8b1f5485277a2ab794c0cc55f7a",
                    "Gateway": "172.30.0.1",
                    "IPAddress": "172.30.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:1e:00:02",
                    "DriverOpts": null
...

连接 mysql ip 172.30.0.2, 就可以愉快地使用了, 对于服务器上连接数据库页面操作, 这实在是个神器!

在这里插入图片描述