无法运行 rake db:migrate with docker compose



我是 docker 的新手,正在尝试按照本教程学习 docker

我在尝试运行时遇到以下错误

docker-compose run web rake db:create

我尝试删除DockerFile的入口点,但结果相同。谁能指出我做错了什么?

/usr/local/bundle/gems/thor-0.20.0/lib/thor/base.rb:507:in `handle_argument_error': ERROR: "rails server" was called with arguments ["db:create"] (Thor::InvocationError)
Usage: "rails server [puma, thin etc] [options]"
from /usr/local/bundle/gems/thor-0.20.0/lib/thor/command.rb:34:in `rescue in run'
from /usr/local/bundle/gems/thor-0.20.0/lib/thor/command.rb:21:in `run'
from /usr/local/bundle/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
from /usr/local/bundle/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
from /usr/local/bundle/gems/railties-5.1.4/lib/rails/command/base.rb:63:in `perform'
from /usr/local/bundle/gems/railties-5.1.4/lib/rails/command.rb:44:in `invoke'
from /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands.rb:16:in `<top (required)>'
from /myapp/bin/rails:9:in `require'
from /myapp/bin/rails:9:in `<top (required)>'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
from /usr/local/bundle/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
from /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
from /myapp/bin/spring:15:in `require'
from /myapp/bin/spring:15:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'

迟到总比没有好。克隆 git 存储库后,您希望将 Dockerfile 替换为教程页面学习 docker 中的 Dockerfile

我也遇到了同样的问题,我更新了我的 docker 文件并将ENTRYPOINT语句替换为CMD和我用来设置 rails 应用程序的示例 docker 文件如下所述:

FROM ruby:3.1.1-slim
WORKDIR /usr/src/app
RUN apt-get update && 
apt-get install ruby-full build-essential -y && 
apt-get install libpq-dev -y
COPY . .
RUN gem install bundler:2.3
RUN gem update --system
RUN bundle install
RUN if [ -f tmp/pids/server.pid ]; then rm tmp/pids/server.pid; fi 
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

之后,我创建了这个 docker 组合:

version: '3'
services:
api:
container_name: api
build: .
restart: always
tty: true
volumes:
- ".:/usr/src/app"
ports:
- "3000:3000"
depends_on:
- postgres

postgres:
image: postgres:15-alpine
container_name: postgres
restart: always
volumes:
- "data:/data/db"
environment:
- POSTGRES_PASSWORD=password
volumes:
data:

docker compose up之后

运行:

docker compose run api bin/rails db:create

为我工作。

最新更新