【问题标题】:Rails app in docker returns database does not exists after successfully running rake db:create成功运行 rake db:create 后,docker 中的 Rails 应用程序返回数据库不存在
【发布时间】:2021-09-28 00:40:20
【问题描述】:

我正在对我一直在开发的应用程序进行 docker 化,但我一直在摸索着想找出原因。

数据库创建成功后

docker-compose run web rake db:create

Created database 'db_dev'
Created database 'db_test'

当我尝试运行迁移命令时

docker-compose run web rake db:migrate

返回

database "db_dev" does not exist

如果再次执行该命令,将执行迁移。

可能是什么原因?

这是我的 docker-compose.yml 配置

version: "3.8"
services:
  db:
    image: postgres:12.7
    volumes:
      - data:/var/lib/postgresql/data
    environment:
      - POSTGRES_HOST_AUTH_METHOD=password
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=the_password
    ports:
      - "5432:5432"
    networks:
      - the_net
  web:
    tty: true
    stdin_open: true
    build: .
    image: the_app:latest
    command: bundle exec rails s -p 3001 -b '0.0.0.0'
    environment:
      - DB_HOST=db
      - DB_USER=postgres
      - DB_PASSWORD=the_password
    env_file:
      - .env
    volumes:
      - .:/myapp
    ports:
      - "3001:3001"
    depends_on:
      - db
    networks:
      - the_net
volumes:
  data:
networks:
  the_net:
    external: true
    name: the_net

提前致谢

【问题讨论】:

    标签: ruby-on-rails postgresql docker


    【解决方案1】:

    除了设置网络之外,我还可以通过在 docker 文档之后添加指向数据库服务的链接来解决这种不一致

    https://docs.docker.com/compose/networking/#links

    我无法完全理解发生了什么,但我的假设是 docker-compose run 正在执行时,docker 容器正在与不同的数据库连接或实例进行通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2013-05-21
      • 2014-10-25
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多