gpt4 book ai didi

ruby - 获取 Errno::ENOENT: No such file or directory - 在 docker 中创建数据库时在 padrino api 中创建

转载 作者:行者123 更新时间:2023-11-29 14:18:20 26 4
gpt4 key购买 nike

我是 padrino 的新手,所以我已经为此苦苦挣扎了一段时间,它真的阻碍了我。

我想做的是,dokerize 我的 padrino 项目,以便我的前端同事可以使用它,这样他们就不需要花太多时间来设置他们的机器。

当我尝试运行 docker-compose run web bundle exec rake sq:create 任务时出现以下异常:

=> Creating database 'my_database_dev'
rake aborted!
Errno::ENOENT: No such file or directory - createdb
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sql-helpers.rb:18:in `spawn'
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sql-helpers.rb:18:in `create_db'
/usr/local/bundle/gems/padrino-gen-0.13.2/lib/padrino-gen/padrino-tasks/sequel.rb:52:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:22:in `load'
/usr/local/bin/bundle:22:

该异常只发生在我的 docker 机器上,即使使用 DATABASE_URL=postgres://pg_pass:pg_user@postgres.local:2345/my_database_dev 这对应于我本地 .env 中的 dockerized postgres 图像file 一切都按预期运行,所以这让我认为问题是 Dockerfile 中缺少某些东西。

我的 Dockerfile 如下所示:

FROM ruby:2.2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /app
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
RUN bundle install
ADD . /app

和我的 docker-compose 文件

version: '2'
services:
db:
image: postgres:latest
ports:
- "2345:5432"
environment:
- POSTGRES_PASSWORD=pg_pass
- POSTGRES_USER=pg_user
web:
build: .
command: bundle exec padrino s -p 3000 -h '0.0.0.0'
ports:
- "3000:3000"
volumes:
- .:/app
depends_on:
- db
links:
- db:db
environment:
- DATABASE_URL=postgres://pg_pass:pg_user@postgres.local:2345/my_database_dev

提前致谢!

最佳答案

几个小时前我遇到了同样的问题。此错误 Errno::ENOENT: No such file or directory - createdb 表示您的 web 容器找不到 createdb,这是 Postgres 提供的脚本。要解决这个问题,请将 postgresql-client 添加到您的 Dockerfile

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev postgresql-client

重建你的web容器

docker-compose build web

并重新运行数据库创建和迁移

docker-compose run web bundle exec rake sq:create
docker-compose run web bundle exec rake sq:migrate

关于ruby - 获取 Errno::ENOENT: No such file or directory - 在 docker 中创建数据库时在 padrino api 中创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39903505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com