首页 > 解决方案 > 如何从我的 ruby​​ docker 应用程序连接到 postgres docker 映像?

问题描述

我有两个单独的项目。第一个是我用 ruby​​ 编写的主要应用程序。第二个是我的 postgresql 数据库项目。我想将数据库与我的主应用程序分开。

下面是我的主要应用程序的 docker-compose.yml:

version: "3.8"

services:
  web:
    build:
      context: .
    command: bundle exec rails s -p 3000
    ports:
      - "3000:3000"

下面是我的database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: forbinary_cms_development
  username: postgres
  password: password
  host: localhost

下面是我的 postgres 项目的 docker-compose.yml:

version: "3.8"
services:
  db:
    image: postgres:10.10
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
volumes: 
     postgres-data:

现在我的问题是如何将我的主应用程序 docker 镜像与这个 postgres docker 镜像连接起来?我想将主应用程序和数据库都保留在单独的 docker 映像中。

标签: rubypostgresqldockerdocker-compose

解决方案


你有几个选择:

  1. 我的首选方式,我认为这是推荐方式 - 将两种服务放在一个 docker compose 文件中https://docs.docker.com/compose/networking/#links
  2. 您可以使用主机 IP 从 Web 服务器公开 DB 端口并访问它
  3. 您可以在两个 docker-compose 文件中配置以使用相同的网络并为每个服务配置 IP。

推荐阅读