在Docker中运行数据库和GUI客户端

目录

背景

PostgreSQL

客户端

访问数据库

MySQL

客户端

访问数据库

MongoDB

客户端

访问数据库

Oracle

Oracle APEX

客户端

访问数据库

SQLServer

客户端

访问数据库

使用Management Studio访问数据库

MariaDB

客户端

访问数据库

其他

命令

端口

检查数据库版本

在线游乐场


背景

在设置新项目时,有时会有一个完整的先决条件列表才能运行该项目,这可能会导致我们使用多个数据库甚至不同版本。Docker非常适合在开发环境中运行本地数据库。在这里,我们将探索在docker中设置多个数据库和GUI客户端的docker-compose.yml文件。考虑到多个数据库,这将是一个非常快速和基本的循环。

我们需要的东西

  • 本地安装的Docker
  • 基本的Docker知识
  • 使用数据库的体验
  • 使用GUI客户端的体验

PostgreSQL

数据库:PostgreSQL

GUI客户端:pgAdmin

这将创建一个在Db实例中命名为postgres的数据库,其中包含凭据adminsecret

version: "3.7"

services:
  pgsql:
    image: postgres:12.2
    container_name:  PostgreSQL
    restart: always
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      PGDATA: /var/lib/postgresql/data
    volumes:
      - pgsql-data:/var/lib/postgresql/data
    ports:
      - 5010:5432

  pgadmin:
    image: dpage/pgadmin4:4.18
    container_name:  PgAdmin
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: secret
      PGADMIN_LISTEN_PORT: 80
    ports:
      - 5011:80
    volumes:
      - pgadmin-data:/var/lib/pgadmin
    links:
      - pgsql:pgsql-server

volumes:
  pgsql-data:
  pgadmin-data:

客户端

pdAdmin将在http://localhost:5011/login获取

admin@admin.comsecret作为凭证。

访问数据库

主机名或服务器作为数据库容器名称PostgreSQL 

端口5432

数据库凭据adminsecret

MySQL

数据库:MySQL

GUI客户端:phpMyAdmin

这将创建一个在Db实例中命名为quotes的数据库,其中包含凭据citizix_userAn0thrS3crt

version: "3.7"

services:
  mysql:
    image: mysql:8.0
    container_name: MySQL
    restart: always
    cap_add:
      - SYS_NICE
    environment:
      - MYSQL_DATABASE=quotes
      - MYSQL_USER=citizix_user
      - MYSQL_PASSWORD=An0thrS3crt
      - MYSQL_ROOT_PASSWORD=mauFJcuf5dhRMQrjj
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - 5012:3306

  phpmyadmin:
    image: phpmyadmin:5.2.0
    container_name: PhpMyAdmin   
    restart: always
    ports:
      - 5013:80
    environment:
      - PMA_ARBITRARY=1
    
volumes:
  mysql-data:

另一个GUI客户端:MySQL工作台

version: "3.7"

services:
  mysql-workbench:
    image: lscr.io/linuxserver/mysql-workbench:8.0.29
    container_name: MySQL-Workbench
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - mysql-workbench-data:/config
    ports:
      - 5014:3000
    cap_add:
      - IPC_LOCK
    restart: unless-stopped

volumes:
  mysql-workbench-data:

作为数据库容器名称的服务器名称MySQL和其他数据库凭据

客户端

PhpMyAdmin将在http://localhost:5013/获取

访问数据库

作为数据库容器名称的服务器名称MySQL

数据库凭据citizix_userAn0thrS3crt

MongoDB

数据库:蒙戈数据库

图形用户界面客户端:Nosqlclient

这将在Db实例中创建一个名为chats的数据库,而无需凭据

version: '3.7'

services:
  mongo:
    image: mongo:4.4.2
    container_name: MongoDB
    restart: always
    environment:
      - MONGO_INITDB_DATABASE=chats
    ports:
      - 5015:27017
    volumes:
      - mongodb-data:/data/db

  mongo_client:
    image: mongoclient/mongoclient:4.0.1
    container_name: Nosqlclient
    restart: always
    depends_on:
      - mongo
    ports:
      - 5016:3000


volumes:
  mongodb-data:

客户端

Nosqlclient将在http://localhost:5016/获取

访问数据库

作为数据库容器名称的主机名MongoDB

端口27017

我们也可以使用连接字符串,例如mongodb://userName:password@containerName:27017/dbname

Oracle

数据库:Oracle

GUI 客户端:CloudBeaver

这将创建一个具有凭据的Db实例

version: '3.7'

services:
  oracle:
    image: wnameless/oracle-xe-11g-r2:18.04-apex
    container_name: OracleDb
    restart: always
    environment:
      - ORACLE_ALLOW_REMOTE=true
      - ORACLE_DISABLE_ASYNCH_IO=true
      - ORACLE_ENABLE_XDB=true
    ports:
      - 5019:1521
      - 5020:8080

  dbeaver:
    image: dbeaver/cloudbeaver:22.1.1
    container_name: CloudBeaver
    restart: unless-stopped
    volumes:
      - dbeaver-data:/opt/cloudbeaver/workspace
    ports:
      - 5021:8978

volumes:
  dbeaver-data:

Oracle APEX

http://localhost:5020/apex/apex_admin 
用户名:ADMIN

密码:Oracle_11g

客户端

CloudBeaver将在http://localhost:5021/获取

最初,它会要求设置凭据,所以我使用了adminuseradminpass

访问数据库

作为数据库容器名称的主机名OracleDb

端口1521

Dbsid xe

数据库凭据systemoracle

SQLServer

数据库:SQLServer

GUI客户端:CloudBeaver

这将创建一个具有凭据的Db实例

version: '3.7'

services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2019-latest
    container_name: SQLServer
    restart: always
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_PID=Express
      - SA_PASSWORD=MyPass@word     #user sa
    #volumes:
      #- sqlserver-data:/var/opt/mssql/data         #not working in windows
      #- "./sqlserver-data/:/var/opt/mssql/data"    #this working in windows
    ports:
      - 5017:1433

客户端

Oracle相同

访问数据库

作为数据库容器名称的主机名SQLServer

端口1433 

数据库(默认)master

数据库凭据saMyPass@word

使用Management Studio访问数据库

服务器名称localhost, 5017

凭据saMyPass@word

设置TrustServerCertificate=Truehttps://stackoverflow.com/a/50504551/2948523)

MariaDB

数据库:MariaDB

这将创建一个在Db实例中命名为quotes的数据库,其中包含凭据citizix_userAn0thrS3crt

version: "3.7"

services:
  maria:
    image: mariadb:10.6
    container_name: MariaDB
    restart: always
    environment:
      - MARIADB_DATABASE=quotes
      - MARIADB_USER=citizix_user
      - MARIADB_PASSWORD=An0thrS3crt
      - MARIADB_ROOT_PASSWORD=mauFJcuf5dhRMQrjj
    volumes:
      - maria-data:/var/lib/mysql
    ports:
      - 5018:3306
    
volumes:
  maria-data:

客户端

PhpMyAdminCloudBeaver

访问数据库

作为数据库容器名称的服务器名称MariaDB

数据库凭据citizix_userAn0thrS3crt

其他

命令

PostgreSQL
docker-compose -f docker-compose.pgsql.yml up -d

MySQL
docker-compose -f docker-compose.mysql.yml up -d
docker-compose -f docker-compose.mysql.workbench.yml up -d

MongoDB
docker-compose -f docker-compose.mongo.yml up -d 

SQLServer
docker-compose -f docker-compose.sqlserver.yml up -d

MariaDB
docker-compose -f docker-compose.maria.yml up -d

Oracle
docker-compose -f docker-compose.oracle.yml up -d

端口

5010, 5011           pgsql
5012, 5013, 5014     mysql
5015, 5016           mongo
5017                 sqlserver
5018                 maria
5019, 5020, 5021     oracle

检查数据库版本

以下是一些用于检查工作数据库版本的SQL查询:

SELECT @@VERSION;            /*sql server*/       /*also works with mysql*/
SELECT * FROM V$VERSION;     /*oracle*/
SELECT VERSION();            /*mysql*/            /*also works with postgre*/
SELECT VERSION();            /*mariadb*/
SELECT VERSION();            /*postgre sql*/      /*also works with mysql*/

在线游乐场

https://www.codeproject.com/Tips/5336563/Run-Database-and-GUI-Clients-in-Docker

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值