libook
2023-07-19 11:03:20 +08:00
没有万金油方案,一切都可以按照你的需求来调整。
服务软件提供 docker compose 的目的在于可以让普通用户不需要去关心部署和连接数据库等组件,一键运行一整套可以用的服务。
容器的一种使用思路是不同服务之间互相隔离,不光是服务本身隔离,数据库和中间件等也可以进行隔离,这样就不会在发生故障的时候互相影响,也不会在一个服务受到网络攻击后导致所有服务受到影响。一部分企业应用场景是可以接受每个服务跑自己的单独的数据库服务的开销成本的,来换取这种隔离带来的各种好处,可以更加灵活地调整每台服务器上部署的容器种类和数量(所以出现了 k8s 这种调度工具)。
但你的需求不一定是这样的,比如你无法接受同时运行多个数据库实例所产生的开销,或者不适合你的管理方式,那么你就完全没必要遵循这样的设计惯例。
当你有特殊需求的时候,比如你需要在另一台服务器上跑数据库,又或者是你需要统一管理所有服务的数据库(比如做主从备份会比较方便),你就可以写自己的 docker compose 配置文件,或者使用命令参数直接部署服务容器,然后通过服务配置文件,或者容器环境变量(取决于容器镜像是否提供这种能力)来配置要连接的数据库的地址、用户名、密码。
如果你要用 Postgres ,你就避免不了了解这个数据库的使用方式,包括如何管理用户(角色)和权限,多搜些教程看看吧。