将 docker 与 RDS (Prod) 一起使用,但对本地数据库设置 (dev) 感到困惑

Don*_*ald 6 database ruby-on-rails rds amazon-web-services docker

我正在使用 Docker 设计一个 Rails webapp,出于各种原因,我想在生产环境中使用 RDS 以实现其可配置性和持久性目的,而不是基于 Docker 容器的数据库(这是一项要求)。

我意识到我可以将database.yml配置为指向 Prod 环境的 RDS 实例,以及本地开发环境中的某个本地数据库实例。

但是,我很困惑是在本地开发环境中使用基于容器的数据库,还是像 MySQL 服务器这样的外部数据库。

基于 env-agnostic 容器的 Docker 模式,我认为仅在某些 envs 中拥有基于容器的数据库没有任何意义(事实上,我认为docker-compose.yml甚至不会支持这样的东西),所以我假设我需要为我的本地开发环境使用 MySQL 服务器解决方案。

有没有其他人经历过这样的要求?让我知道我是否以正确的方式思考这个问题。此外,这会对数据库迁移脚本造成任何潜在问题吗?

欢迎任何建议!

谢谢你。

Rut*_*ins 1

很好的问题唐纳德。

\n

我设置了一个 postgres 容器,以便使用我的dev.docker-compose.yml文件在本地使用。

\n

在产品上,就像您一样,我的database.yml配置指向我的 RDS 数据库。

\n

在我的产品 docker compose 文件中,由于我使用的是 RDS,所以没有指定任何数据库容器

\n
# prod.docker-compose.yml\nversion: "3.9"\n\nservices:\n  web:\n    build:\n      context: .\n      target: prod\n      args:\n        PG_MAJOR: '13'\n        RUBY_VERSION: '2.6.6'\n        BUNDLER_VERSION: '2.1.4'\n    env_file: .env\n    stdin_open: true\n    tty: true\n    command: ./bin/start_dev_server\n    image: ${REGISTRY_HOST}\n    ports:\n      - "3000:3000"\n\n# dev.docker-compose.yml\nversion: "3.9"\n\nservices:\n  web:\n    build:\n      context: .\n      target: dev\n      args:\n        PG_MAJOR: '13'\n        RUBY_VERSION: '2.6.6'\n        BUNDLER_VERSION: '2.1.4'\n    env_file: .env\n    stdin_open: true\n    tty: true\n    command: ./bin/start_dev_server\n    volumes:\n      - ".:/sokoplace"\xc2\xac\n      - bundle:/bundle\n    ports:\n      - "3000:3000"\n\n  postgres:\n    image: "postgres:13-alpine"\n    volumes:\n      - postgres:/var/lib/postgresql/data\n    ports:\n      - "5432:5432"\n    environment:\n      POSTGRES_HOST_AUTH_METHOD: trust\n\nvolumes:\n  bundle:\n  postgres:\n\n# config/database.yml\nproduction:\n  <<: *default\n  url: <%= ENV['PRODUCTION_POSTGRES_HOST'] %>\n
Run Code Online (Sandbox Code Playgroud)\n