Compose: 链接不适用于Dockerfile中的rake

创建于 2015-11-04  ·  3评论  ·  资料来源: docker/compose

目前,我正在使用docker compose将我的Web应用程序与postgre数据库连接。 我的配置如下所示:

# Dockerfile

FROM rails:onbuild
RUN rake db:create db:migrate db:seed
# config/database.yml

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
    adapter: postgresql
    encoding: utf8
    database: rezeptr_prod
    pool: 5
    username: postgres
    password:
    host: db

development:
  <<: *default
  database: rezeptr_dev

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: rezeptr_test
# docker-compose.yml

db:
  image: postgres
web:
  build: .
  volumes:
    - .:/usr/src/app
  ports:
    - "3000:3000"
  links:
    - db:db

如果我运行docker-compose up我会收到此错误

could not translate host name "db" to address: Name or service not known

如果我没有在Dockerfile中运行rake db:create ...并像这样docker-compose run web rake db:create一样运行它,它将正常工作,并且我不会收到任何错误。 你能帮助我吗?

kinquestion

最有用的评论

是的,链接在构建阶段不可用。 有几种方法可以在构建过程中安装您的固定装置,但是没有一种方法非常简单:

  • 您可以为数据库创建一个新的Dockerfile ,添加所有项目源和ruby依赖项,并运行rake db:create作为映像构建的一部分
  • 您可以将rake db:create作为数据库映像的入口点脚本的一部分运行(我不喜欢它,因此不建议这样做)
  • 您可以将其从构建中排除,并使其成为设置环境的手动步骤(也不是风扇,但这是最简单的选择,这也是我们在示例docs http://docs.docker.com/compose中使用的方法/ rails /)
  • 进行一个多步骤构建,以启动一个临时环境,您可以使用该环境创建数据的sql转储,并将其包含在数据库映像中。 目前还没有很好的工具,但是我正在https://github.com/dnephin/buildpipe中进行开发。 目前尚无文档,因此您可能不想使用它。

所有3条评论

是的,链接在构建阶段不可用。 有几种方法可以在构建过程中安装您的固定装置,但是没有一种方法非常简单:

  • 您可以为数据库创建一个新的Dockerfile ,添加所有项目源和ruby依赖项,并运行rake db:create作为映像构建的一部分
  • 您可以将rake db:create作为数据库映像的入口点脚本的一部分运行(我不喜欢它,因此不建议这样做)
  • 您可以将其从构建中排除,并使其成为设置环境的手动步骤(也不是风扇,但这是最简单的选择,这也是我们在示例docs http://docs.docker.com/compose中使用的方法/ rails /)
  • 进行一个多步骤构建,以启动一个临时环境,您可以使用该环境创建数据的sql转储,并将其包含在数据库映像中。 目前还没有很好的工具,但是我正在https://github.com/dnephin/buildpipe中进行开发。 目前尚无文档,因此您可能不想使用它。

好酷! :+1:首先,感谢您的详细说明! 我将其作为手动步骤来运行,到目前为止,这已经足够了。 稍后我可以考虑进一步的步骤!

@dazorni您能否更新解决步骤。 我发现了这个并试图发现。 我知道很难复制,但是如果可以显示:),我会非常感激。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

riquito picture riquito  ·  146评论

tomstuart picture tomstuart  ·  98评论

devinrsmith picture devinrsmith  ·  100评论

ahmet2mir picture ahmet2mir  ·  131评论

thaJeztah picture thaJeztah  ·  274评论