目前,我正在使用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
一样运行它,它将正常工作,并且我不会收到任何错误。 你能帮助我吗?
是的,链接在构建阶段不可用。 有几种方法可以在构建过程中安装您的固定装置,但是没有一种方法非常简单:
Dockerfile
,添加所有项目源和ruby依赖项,并运行rake db:create
作为映像构建的一部分rake db:create
作为数据库映像的入口点脚本的一部分运行(我不喜欢它,因此不建议这样做)好酷! :+1:首先,感谢您的详细说明! 我将其作为手动步骤来运行,到目前为止,这已经足够了。 稍后我可以考虑进一步的步骤!
@dazorni您能否更新解决步骤。 我发现了这个并试图发现。 我知道很难复制,但是如果可以显示:),我会非常感激。
最有用的评论
是的,链接在构建阶段不可用。 有几种方法可以在构建过程中安装您的固定装置,但是没有一种方法非常简单:
Dockerfile
,添加所有项目源和ruby依赖项,并运行rake db:create
作为映像构建的一部分rake db:create
作为数据库映像的入口点脚本的一部分运行(我不喜欢它,因此不建议这样做)