我正在使用 Docker 设计一个 Rails web 应用程序,出于多种原因,我想在生产环境中使用 RDS 来实现其可配置性和耐用性,而不是基于 Docker 容器的数据库(这是一个要求)。
我意识到我可以配置数据库.yml指向 Prod 环境中的 RDS 实例,以及本地开发环境中的某个本地数据库实例。
但是,我很困惑是否在本地开发环境中使用基于容器的数据库,还是使用 MySQL 服务器等外部数据库。
基于与环境无关的容器的 Docker 模式,我认为仅在某些环境中拥有基于容器的数据库是没有任何意义的(事实上,我不认为docker-compose.yml
甚至会支持这样的东西),所以我假设我需要为我的本地开发环境使用 MySQL 服务器解决方案。
还有其他人经历过这样的要求吗?让我知道我是否以正确的方式思考这个问题。另外,这会给数据库迁移脚本带来任何潜在问题吗?
欢迎任何建议!
谢谢。
很好的问题唐纳德。
我有一个 postgres 容器设置为使用我的本地使用dev.docker-compose.yml
file.
在产品上,就像你一样,我有我的database.yml
指向我的 RDS 数据库的配置。
在我的产品 docker compose 文件中,由于我使用的是 RDS,所以没有指定任何数据库容器
# prod.docker-compose.yml
version: "3.9"
services:
web:
build:
context: .
target: prod
args:
PG_MAJOR: '13'
RUBY_VERSION: '2.6.6'
BUNDLER_VERSION: '2.1.4'
env_file: .env
stdin_open: true
tty: true
command: ./bin/start_dev_server
image: ${REGISTRY_HOST}
ports:
- "3000:3000"
# dev.docker-compose.yml
version: "3.9"
services:
web:
build:
context: .
target: dev
args:
PG_MAJOR: '13'
RUBY_VERSION: '2.6.6'
BUNDLER_VERSION: '2.1.4'
env_file: .env
stdin_open: true
tty: true
command: ./bin/start_dev_server
volumes:
- ".:/sokoplace"¬
- bundle:/bundle
ports:
- "3000:3000"
postgres:
image: "postgres:13-alpine"
volumes:
- postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
bundle:
postgres:
# config/database.yml
production:
<<: *default
url: <%= ENV['PRODUCTION_POSTGRES_HOST'] %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)