使用Docker与RDS(生产环境)一起,但对本地数据库设置(开发环境)感到困惑。

6
我正在使用Docker设计一个Rails webapp,由于配置性和耐久性的目的,我想在生产环境中使用RDS,而不是基于Docker容器的DB(这是一个要求)。
我知道可以通过配置database.yml来指向我的RDS实例,以便在本地开发环境中连接到某个本地DB实例。
但是,我不确定在本地开发环境中是否应该使用基于容器的DB,还是像MySQL Server这样的外部DB。
基于Docker容器无关的模式,我认为仅在某些环境中使用基于容器的DB没有任何意义(事实上,我认为docker-compose.yml甚至不支持这样的操作),因此我假设我需要在本地开发环境中采用MySQL Server解决方案。
有其他人遇到过这样的需求吗?如果我考虑得正确,请告诉我。此外,这会对DB迁移脚本造成任何潜在问题吗?
欢迎提出任何建议!
谢谢。
1个回答

1

很好的问题,唐纳德。

我已经使用我的dev.docker-compose.yml文件设置了一个用于本地使用的postgres容器。

在生产环境中,就像你一样,我将我的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'] %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接